对于CMake的"安装"命令,COMPONENT参数可以做什么?

Sam*_*uel 33 cmake

我不知道是什么的争论COMPONENT中的install()指挥手段,我不明白这样做的CMake的文档.更详细的是什么?

一个例子是什么?

arr*_*owd 53

您可以将安装目标分组到组件中,例如"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)
Run Code Online (Sandbox Code Playgroud)

这使得可以运行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`. (5认同)
  • 请问,什么是组件。还是让我很困惑,能不能给个测试代码。然后我可以运行它。并看到一些差异 (2认同)
  • 上面建议的每个目标命令的安装在几个地方被打破,我建议在这里查看:http://stackoverflow.com/a/21853784/258418 (2认同)
  • 这在创建 CPack 组件样式安装程序时也很有用。不幸的是,CPack 的文档非常详细,但以下两个链接是一个开始:[Component Install With CPack](https://cmake.org/Wiki/CMake:Component_Install_With_CPack) 和 [CPackComponent Variables](https://cmake.org /cmake/help/latest/module/CPackComponent.html) (2认同)
  • 从 3.15 开始有一个新功能 `cmake --install <dir> --component <component>`。您可以将此添加到您的答案中吗? (2认同)