Instalación de objetivos¶
install(TARGETS targets... ] ] ] )
La forma TARGETS
especifica las reglas para la instalación de objetivos de un proyecto. Hay cinco tipos de archivos de destino que pueden instalarse: ARCHIVE
, LIBRARY
, RUNTIME
, FRAMEWORK
y BUNDLE
.Los ejecutables se tratan como objetivos RUNTIME
, excepto los marcados con la propiedad MACOSX_BUNDLE
que se tratan como objetivos BUNDLE
en OS X. Las bibliotecas estáticas se tratan como objetivos ARCHIVE
, excepto las marcadas con la propiedad FRAMEWORK
, que se tratan como objetivos FRAMEWORK
en OS X. Las bibliotecas de módulos se tratan siempre como objetivos LIBRARY
. Para las plataformas DLL, la parte DLL de una biblioteca compartida se trata como un objetivo RUNTIME
y la biblioteca de importación correspondiente se trata como un objetivo ARCHIVE
.Todos los sistemas basados en Windows, incluido Cygwin, son plataformas DLL.Los argumentos ARCHIVE
, LIBRARY
, RUNTIME
y FRAMEWORK
cambian el tipo de objetivo al que se aplican las propiedades posteriores.Si no se indica ninguno, las propiedades de instalación se aplican a todos los tipos de objetivos. Si sólo se indica uno, sólo se instalarán los objetivos de ese tipo (que puede utilizarse para instalar sólo una DLL o sólo una biblioteca de importación).
Los argumentos PRIVATE_HEADER
, PUBLIC_HEADER
y RESOURCE
hacen que las propiedades posteriores se apliquen a la instalación de los archivos asociados a un objetivo de biblioteca compartida FRAMEWORK
en plataformas que no sean Apple. Las reglas definidas por estos argumentos se ignoran en las plataformas Apple porque los archivos asociados se instalan en las ubicaciones apropiadas dentro de la carpeta del framework. Consulte la documentación de las propiedades de destinoPRIVATE_HEADER
, PUBLIC_HEADER
yRESOURCE
para obtener más detalles.
Se puede especificar NAMELINK_ONLY
o NAMELINK_SKIP
como opciónLIBRARY
. En algunas plataformas una biblioteca compartida versionada tiene un enlace simbólico como:
lib<name>.so -> lib<name>.so.1
donde lib<name>.so.1
es el nombre de la biblioteca y lib<name>.so
es un «namelink» que permite a los enlazadores encontrar la biblioteca cuando se les da-l<name>
. La opción NAMELINK_ONLY
hace que se instale sólo el enlace de biblioteca cuando se instala un objetivo de biblioteca. La opción NAMELINK_SKIP
provoca la instalación de archivos de biblioteca distintos del namelink cuando se instala un objetivo de biblioteca. Cuando no se da ninguna opción, se instalan ambas partes. En las plataformas en las que las bibliotecas compartidas versionadas no tienen namelinks o cuando una biblioteca no está versionada, la opción NAMELINK_SKIP
instala la biblioteca y la opción NAMELINK_ONLY
no instala nada. Consulte las propiedades VERSION
y SOVERSION
destino para obtener detalles sobre la creación de bibliotecas compartidas versionadas.
La opción INCLUDES DESTINATION
especifica una lista de directorios que se añadirán a la propiedad INTERFACE_INCLUDE_DIRECTORIES
destino de la <targets>
cuando sea exportada por el comandoinstall(EXPORT)
. Si se especifica una ruta relativa, se trata como relativa al $<INSTALL_PREFIX>
.Esto es independiente del resto de los grupos de argumentos y en realidad no instala nada.
Se pueden especificar uno o más grupos de propiedades en una sola llamada a la forma TARGETS
de este comando. Un objetivo puede ser instalado más de una vez en diferentes lugares. Considere los objetivos hipotéticos myExe
, mySharedLib
y myStaticLib
. El código:
install(TARGETS myExe mySharedLib myStaticLib RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/static)install(TARGETS mySharedLib DESTINATION /some/full/path)
instalará myExe
en <prefix>/bin
y myStaticLib
en<prefix>/lib/static
. En las plataformas sin DLL, mySharedLib
se instalará en <prefix>/lib
y /some/full/path
. En plataformas DLL, la DLL mySharedLib
se instalará en <prefix>/bin
y /some/full/path
y su biblioteca de importación se instalará en <prefix>/lib/static
y /some/full/path
.
La opción EXPORT
asocia los archivos de destino instalados con el anexo llamado <export-name>
. Debe aparecer antes de cualquier opción RUNTIME
,LIBRARY
, o ARCHIVE
. Para instalar realmente el archivo de exportación propiamente dicho, llame a install(EXPORT)
, que se documenta a continuación.
La instalación de un objetivo con la propiedad EXCLUDE_FROM_ALL
de objetivo establecida en TRUE
tiene un comportamiento indefinido.
El destino de instalación dado al objetivo de instalación DESTINATION
puede utilizar «expresiones generadoras» con la sintaxis $<...>
. Ver el manual cmake-generator-expressions(7)
para las expresiones disponibles.