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 SOVERSIONdestino para obtener detalles sobre la creación de bibliotecas compartidas versionadas.

La opción INCLUDES DESTINATIONespecifica una lista de directorios que se añadirán a la propiedad INTERFACE_INCLUDE_DIRECTORIESdestino 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.

admin

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

lg