为啥CPack会生成一个空包?
Posted
技术标签:
【中文标题】为啥CPack会生成一个空包?【英文标题】:Why CPack generates an empty package?为什么CPack会生成一个空包? 【发布时间】:2018-08-05 20:37:29 【问题描述】:存在一个创建一个控制台应用程序的 cmake 项目。 我在那个 cmake 项目中添加了包生成的能力:
# ... above cmake code for one console application creation
# below code that I add:
#install
install(TARGETS $PROJECT_NAME RUNTIME DESTINATION "C:/Apps/Consolas" COMPONENT applications)
# pack
set(CPACK_PACKAGE_NAME $PROJECT_NAME)
set(CPACK_PACKAGE_VENDOR "MyOrg")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "CPack Component Installation Example")
set(CPACK_PACKAGE_VERSION "1.0.0")
set(CPACK_GENERATOR "ZIP")
include(CPack)
包创建通过,没有任何错误,(!)但包是空的。
为什么会发生这种情况以及如何解决这个问题? (我用的是cmake 3.12.0)
【问题讨论】:
您没有将组件添加到您的包中,即cpack_add_component(applications DISPLAY_NAME "Apps" DESCRIPTION "describe whats in the package")
@vre,在最后一行“include(CPack)”之前,我包括了两行:“include(CPackComponent)”,正如你所写的“cpack_add_component(applications DISPLAY_NAME "Apps"DESCRIPTION"描述包中的内容“)”。包生成通过没有任何错误,但包仍然是空的:(
【参考方案1】:
DESTINATION
应该是包内的相对目录。
请考虑以下情况:
install(TARGETS $PROJECT_NAME RUNTIME DESTINATION "bin" COMPONENT applications)
解释:CPack 将在将项目安装到<build-dir>/_CPack_Packages
的子目录后创建 ZIP 文件。通过指定绝对路径,在预期的子目录中不会安装任何文件,并且包为空。
【讨论】:
以上是关于为啥CPack会生成一个空包?的主要内容,如果未能解决你的问题,请参考以下文章