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 FRAMEWORK
docelowej 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_DIRECTORIES
target 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ń.