【发布时间】:2012-02-29 16:45:08
【问题描述】:
我不知道install() 命令的参数COMPONENT 是什么意思,我也不了解CMake 文档。更详细的是什么?
有什么例子?
【问题讨论】:
标签: cmake
我不知道install() 命令的参数COMPONENT 是什么意思,我也不了解CMake 文档。更详细的是什么?
有什么例子?
【问题讨论】:
标签: cmake
您可以将安装目标分组为组件,例如“docs”、“libs”、“runtime”等。
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)
这使得运行cmake -DCOMPONENT=comp_one -P {your_build_dir}/cmake_install.cmake 以仅安装libone 库和one 可执行文件成为可能。当您发出make install 时,所有组件都已安装。
【讨论】:
cmake 调用是唯一的方法。但是您可以使用add_custom_target(TARGET install_one COMMAND ${CMAKE_PROGRAM} -DCOMPONENT=comp_one -P {CMAKE_BINARY_DIR}/cmake_install.cmake 将其包装到目标中,然后使用make install_one。
cmake --install <dir> --component <component>。您可以将此添加到您的答案中吗?
您可以通过三种方式在 CMake 中使用install 命令:
安装一个可执行文件
INSTALL(TARGETS ExecutableTarget RUNTIME DESTINATION FOLDER_LOCATION)
安装静态库
INSTALL(TARGETS StaticLibraryTarget ARCHIVE DESTINATION FOLDER_LOCATION)
安装动态库
INSTALL(TARGETS SharedLibraryTarget LIBRARY DESTINATION FOLDER_LOCATION)
【讨论】:
COMPONENT 关键字的含义。这个答案展示了三种种类的目标,这是一个正交的概念。