Instalowanie plików docelowych¶

install(TARGETS targets... ] ] ] )

Formularz TARGETS określa zasady instalowania plików docelowych z projektu. Istnieje pięć rodzajów plików docelowych, które można zainstalować:ARCHIVE, LIBRARY, RUNTIME, FRAMEWORK i BUNDLE.Pliki wykonywalne są traktowane jak pliki docelowe RUNTIME, z wyjątkiem tych oznaczonych właściwością MACOSX_BUNDLE, które w systemie OS X są traktowane jako pliki docelowe BUNDLE. Biblioteki statyczne są traktowane jako ARCHIVE cele, z wyjątkiem tych oznaczonych właściwością FRAMEWORK, które są traktowane jako FRAMEWORK cele w systemie OS X.Biblioteki modułowe są zawsze traktowane jako LIBRARY cele.W przypadku platform innych niż DLL biblioteki współdzielone są traktowane jako LIBRARY cele, z wyjątkiem tych oznaczonych właściwością FRAMEWORK, które są traktowane jako FRAMEWORK cele w systemie OS X. W przypadku platform DLL część DLL biblioteki współdzielonej jest traktowana jako cel RUNTIME, a odpowiadająca jej biblioteka importowa jest traktowana jako cel ARCHIVE. Wszystkie systemy oparte na Windows, w tym Cygwin, są platformami DLL. Argumenty ARCHIVE, LIBRARY, RUNTIME i FRAMEWORK zmieniają typ celu, do którego odnoszą się kolejne właściwości.Jeśli nie podano żadnego, właściwości instalacji odnoszą się do wszystkich typów celów. Jeśli podano tylko jeden z nich, to zostaną zainstalowane tylko obiekty tego typu (co może być użyte do zainstalowania tylko biblioteki DLL lub tylko biblioteki importu).

Argumenty PRIVATE_HEADER, PUBLIC_HEADER i RESOURCE powodują, że kolejne właściwości są stosowane do instalowania plików FRAMEWORKdocelowej biblioteki współdzielonej na platformach innych niż Apple. Reguły zdefiniowane przez te argumenty są ignorowane na platformach Apple, ponieważ pliki stowarzyszone są instalowane w odpowiednich lokalizacjach wewnątrz folderu frameworka. Zobacz dokumentację właściwościPRIVATE_HEADER, PUBLIC_HEADER iRESOURCE celu, aby uzyskać szczegółowe informacje.

Jako opcjęLIBRARY można podać albo NAMELINK_ONLY albo NAMELINK_SKIP. Na niektórych platformach wersjonowana biblioteka współdzielona ma dowiązanie symboliczne, takie jak:

lib<name>.so -> lib<name>.so.1

gdzie lib<name>.so.1 jest nazwą soname biblioteki, a lib<name>.so jest „namelink” pozwalającym linkerom znaleźć bibliotekę, gdy podano-l<name>. Opcja NAMELINK_ONLY powoduje instalację tylko namelink, gdy instalowany jest cel biblioteczny. Opcja NAMELINK_SKIP powoduje instalację plików bibliotek innych niż namelink, gdy instalowany jest cel biblioteczny. Gdy nie podano żadnej z tych opcji, instalowane są obie części. Na platformach, gdzie wersjonowane biblioteki współdzielone nie mają namelinków lub gdy biblioteka nie jest wersjonowana, opcjaNAMELINK_SKIP instaluje bibliotekę, a opcja NAMELINK_ONLY nie instaluje niczego. Zobacz właściwości VERSION iSOVERSION target, aby uzyskać szczegóły na temat tworzenia wersjonowanych bibliotek współdzielonych.

Opcja INCLUDES DESTINATION określa listę katalogów, które zostaną dodane do właściwości INTERFACE_INCLUDE_DIRECTORIEStarget właściwość <targets> podczas eksportowania przez polecenieinstall(EXPORT). Jeśli podano ścieżkę względną, jest ona traktowana jako względna względem $<INSTALL_PREFIX>.Jest to niezależne od reszty grup argumentów i w rzeczywistości niczego nie instaluje.

Jedna lub więcej grup właściwości może być określona w pojedynczym wywołaniu postaci TARGETS tego polecenia. Cel może zostać zainstalowany więcej niż jeden raz w różnych lokalizacjach. Rozważmy hipotetyczne cele myExe, mySharedLib i myStaticLib. Kod:

install(TARGETS myExe mySharedLib myStaticLib RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/static)install(TARGETS mySharedLib DESTINATION /some/full/path)

zainstaluje myExe w <prefix>/bin i myStaticLib w<prefix>/lib/static. Na platformach bez bibliotek DLL plik mySharedLib zostanie zainstalowany na pozycjach <prefix>/lib i /some/full/path. Na platformach DLL biblioteka mySharedLib DLL zostanie zainstalowana do <prefix>/bin i/some/full/path, a jej biblioteka importu zostanie zainstalowana do<prefix>/lib/static i /some/full/path.

Opcja EXPORT kojarzy zainstalowane pliki docelowe z eksportem o nazwie <export-name>. Musi się ona pojawić przed opcjami RUNTIME,LIBRARY lub ARCHIVE. Aby faktycznie zainstalować sam plik eksportu, należy wywołać install(EXPORT), udokumentowane poniżej.

Instalowanie celu z właściwością EXCLUDE_FROM_ALL target ustawioną na TRUE ma niezdefiniowane zachowanie.

Miejsce docelowe instalacji podane do pliku docelowego instalacji DESTINATION może używać „wyrażeń generatora” o składni $<...>. Zobacz podręcznikcmake-generator-expressions(7) dla dostępnych wyrażeń.

admin

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

lg