2012-02-08 15 views

Respuesta

33

Puede objetivos de instalación de grupo en componentes, por ejemplo "docs", "libs", "ejecución", etc.

add_library(libone libone.c) 
add_executable(one main1.c) 
install(TARGETS libone one DESTINATION /somedir COMPONENT comp_one) 

add_library(libtwo libtwo.c) 
add_executable(two main2.c) 
install(TARGETS libtwo two DESTINATION /somedir COMPONENT comp_two) 

Esto hace que sea posible ejecutar cmake -DCOMPONENT=comp_one -P {your_build_dir}/cmake_install.cmake instalar única biblioteca libone y un ejecutable . Cuando emite make install, todos los componentes están instalados.

+0

Gracias por su respuesta. el componente se instalará junto con el objetivo en un archivo o en el mismo directorio con un archivo diferente? En mi opinión, puedo instalar diferentes objetivos como este: install (TARGETS myExe mySharedLib myStaticLib RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/static). SO, que es mejor – Samuel

+0

No se trata de los directorios de destino, sino de los objetivos de instalación. Por ejemplo, si tiene 4 cláusulas 'install()', 2 con 'COMPONENT a' y 2 con' COMPONENTE b'. Luego, si ejecuta 'make install', se instalarán los 4 objetivos, pero solo 2 si especifica el nombre del componente:" a "o" b ". – arrowd

+0

Disculpe, ¿qué es un componente? Todavía me confundió, ¿puedes darme un código de prueba? entonces puedo ejecutarlo. y ver alguna diferencia – Samuel

-7

Hay tres formas de usar el comando de instalación en CMake.

(1) Instalar Ejecutable

INSTALL(TARGETS ExecutableTarget RUNTIME DESTINATION FOLDER_LOCATION) 

(2) Instalar biblioteca estática

INSTALL(TARGETS StaticLibraryTarget ARCHIVE DESTINATION FOLDER_LOCATION) 

(3) Instalar Dynamic Library

INSTALL(TARGETS SharedLibraryTarget LIBRARY DESTINATION FOLDER_LOCATION) 
+3

-1 porque la pregunta era sobre el significado de la palabra clave 'COMPONENT'. Esta respuesta demuestra tres * tipos * de objetivos, que es un concepto ortogonal. –

Cuestiones relacionadas