对于我的应用程序,我创建了 4 个组件,并且只想“安装”应用程序及其文档。根据https://cmake.org/Wiki/CMake:CPackConfiguration ,如果在我的配置文件中有一行
set(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_CURRENT_BINARY_DIR};${CMAKE_PROJECT_NAME};ALL;/")
然后安装所有四个组件。如果我使用组件名称而不是像
set(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_CURRENT_BINARY_DIR};${CMAKE_PROJECT_NAME};apps docs;/")
我收到一个没有附加组件名称的包,它包含顶级请求目录但根本没有文件。如果我只提供一个组件,比如
set(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_CURRENT_BINARY_DIR};${CMAKE_PROJECT_NAME};apps;/")
包名不包含组件名称,但文件在正确的位置生成。
我做错了什么?
编辑:只是为了添加更多奇怪的东西:
对于所有情况,创建名称为 install_manifest_+comp name
的 4 个文件。对于第二种情况,我有长度为零的 install_manifest_apps docs.txt
,对于第三种情况,我有包含正确内容的 install_manifest_apps.txt
。
在我看来,宏只能接受一个参数,可以是 ALL 或组件名称;这意味着它不能用于安装双组件系统。
此外:如果我使用一个组件名称,make package
只生成一个包,不附加组件名称,但包含正确的内容。到现在为止我猜make install
和make package
是独立的。
最佳答案
为 CPACK_INSTALL_CMAKE_PROJECTS 设置多个值,每个值对应您要包含的每个组件:
set( CPACK_INSTALL_CMAKE_PROJECTS
"${CMAKE_CURRENT_BINARY_DIR};${CMAKE_PROJECT_NAME};apps;/"
"${CMAKE_CURRENT_BINARY_DIR};${CMAKE_PROJECT_NAME};docs;/"
)
关于cmake - CPACK_INSTALL_CMAKE_PROJECTS 可以用于选择性安装吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41472112/