对于我的应用程序,我创建了4个组件,并且只想“安装”应用程序及其文档。根据{{3}},如果在我的配置文件中我有行
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;/")
包名称不包含组件的名称,但文件生成在正确的位置。
我错了什么?
编辑:只是添加更多奇怪的东西: 对于ALL case 4,创建名为'install_manifest_ + comp name'的文件。对于第二种情况,我的'install_manifest_apps docs.txt'为零长度,而对于第三种情况,我有'install_manifest_apps.txt',其中包含正确的内容。
在我看来,宏只能接受一个可以是ALL或组件名称的参数;这意味着它不能用于安装双组分系统。
此外:如果我使用组件名称,'make package'只生成一个包,而不附加组件名称,但具有正确的内容。直到现在我猜测'make install'和'make package'是独立的。
答案 0 :(得分:0)
将多个值设置为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;/"
)