Installing Targets¶
install(TARGETS targets... ] ] ] )
O formulário TARGETS
especifica regras para instalar alvos a partir de aproject. Há cinco tipos de arquivos de destino que podem ser instalados:ARCHIVE
, LIBRARY
, RUNTIME
, FRAMEWORK
, e BUNDLE
.Executables são tratados como RUNTIME
alvos, exceto que aqueles marcados com a propriedade MACOSX_BUNDLE
são tratados como BUNDLE
alvos no OS X. As bibliotecas estáticas são tratadas como ARCHIVE
alvos, exceto que as marcadas com a propriedade FRAMEWORK
são tratadas como FRAMEWORK
alvos no OS X. As bibliotecas estáticas são sempre tratadas como LIBRARY
alvos. Para plataformas não-DLL as bibliotecas compartilhadas são tratadas como LIBRARY
alvos, exceto que as marcadas com a propriedade FRAMEWORK
são tratadas como FRAMEWORK
alvos no OS X. Para plataformas DLL a parte DLL de uma biblioteca compartilhada é tratada como um alvo RUNTIME
e a biblioteca de importação correspondente é tratada como um alvo ARCHIVE
. Todos os sistemas baseados em Windows, incluindo Cygwin são plataformas DLL. Os argumentos ARCHIVE
, LIBRARY
, RUNTIME
, e FRAMEWORK
mudam o tipo de alvo ao qual as propriedades subseqüentes se aplicam. Se apenas um for dado, então apenas alvos desse tipo serão instalados (que podem ser usados para instalar apenas uma DLL ou apenas uma importlibrary).
>
Os PRIVATE_HEADER
, PUBLIC_HEADER
, e RESOURCE
argumentoscausam as propriedades subsequentes a serem aplicadas à instalação de um arquivo associado a uma biblioteca de FRAMEWORK
arquivos associados à biblioteca compartilhada em plataformas não-Apple. As regras definidas por estes argumentos são ignoradas nas plataformas Apple porque os arquivos associados são instalados nos locais apropriados dentro da pasta do framework. Veja a documentação da opçãoPRIVATE_HEADER
, PUBLIC_HEADER
, eRESOURCE
propriedades do alvo para detalhes.
>A opção NAMELINK_ONLY
ou NAMELINK_SKIP
pode ser especificada como uma opçãoLIBRARY
. Em algumas plataformas uma biblioteca compartilhada versionada tem um link simbólico como:
lib<name>.so -> lib<name>.so.1
onde lib<name>.so.1
é o soname da biblioteca e lib<name>.so
é um “namelink” que permite aos linkers encontrar a biblioteca quando dado-l<name>
. A opção NAMELINK_ONLY
causa a instalação de apenas um link de então quando um alvo da biblioteca é instalado. A opção NAMELINK_SKIP
causa a instalação de arquivos de biblioteca diferentes do namelink quando o alvo alibrary é instalado. Quando nenhuma das duas opções é dada, ambas as partes são instaladas. Em plataformas onde bibliotecas compartilhadas versionadas não possuem namelinks ou quando uma biblioteca não está versionada a opção NAMELINK_SKIP
instala a biblioteca e a opção NAMELINK_ONLY
opção não instala nada. Veja as propriedades VERSION
e SOVERSION
alvo para detalhes sobre a criação de bibliotecas compartilhadas versionadas.
O INCLUDES DESTINATION
especifica uma lista de diretórios que serão adicionados à propriedade INTERFACE_INCLUDE_DIRECTORIES
alvo do <targets>
quando exportados pelo comandoinstall(EXPORT)
. Se um caminho relativo é especificado, ele é tratado como relativo a $<INSTALL_PREFIX>
.Isto é independente do resto dos grupos de argumentos e não instala realmente nada.
Um ou mais grupos de propriedades podem ser especificados em uma única chamada para a forma de TARGETS
deste comando. Um alvo pode ser instalado mais do que uma vez em diferentes locais. Considere alvos hipotéticos myExe
,mySharedLib
, e myStaticLib
. O código:
install(TARGETS myExe mySharedLib myStaticLib RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/static)install(TARGETS mySharedLib DESTINATION /some/full/path)
irá instalar myExe
a <prefix>/bin
e myStaticLib
a <prefix>/lib/static
. Em plataformas não-DLL mySharedLib
será instalado até <prefix>/lib
e /some/full/path
. Em plataformas DLL-mySharedLib
DLL será instalado até <prefix>/bin
e /some/full/path
e sua biblioteca de importação será instalada até <prefix>/lib/static
e /some/full/path
.
A opção EXPORT
associa os arquivos de destino instalados com anexport chamado <export-name>
. Ela deve aparecer antes de qualquer RUNTIME
,LIBRARY
, ou ARCHIVE
opções. Para instalar o arquivo de exportação em si, ligue para install(EXPORT)
, documentado abaixo.
Instalando um alvo com o conjunto EXCLUDE_FROM_ALL
target propertyset para TRUE
tem comportamento indefinido.
The install destination given to the target install DESTINATION
mayuse use “generator expressions” with the syntax $<...>
. Veja o manualcmake-generator-expressions(7)
para as expressões disponíveis.