使用 CPack,在 OSX 上构建时,如何避免在包/捆绑文件名中以后缀 Darwin 结尾?

Posted

技术标签:

【中文标题】使用 CPack,在 OSX 上构建时,如何避免在包/捆绑文件名中以后缀 Darwin 结尾?【英文标题】:Using CPack, when building on OSX, how to avoid ending up with the suffix Darwin in the package/bundle filename? 【发布时间】:2017-06-30 12:28:39 【问题描述】:

当我在 OSX 上使用 CPack 构建时,我生成的包名称在文件名中包含“Darwin”。我不希望它在那里,因为这些天它没有任何用途。我如何告诉 CPack 不要添加它?

cmake -G "Unix Makefiles" ..
make && ctest && cpack -G "Bundle

我得到:

myapp-1.2.3-Darwin.dmg

我想要:

myapp-1.2.3.dmg

【问题讨论】:

【参考方案1】:

文件名由CPACK_PACKAGE_FILE_NAME 变量控制,您需要在调用include(CPack) 之前设置该变量。默认值为:

$CPACK_PACKAGE_NAME-$CPACK_PACKAGE_VERSION-$CPACK_SYSTEM_NAME

在你的情况下,你想要这样的东西(假设你已经设置了 CPACK_PACKAGE_NAMECPACK_PACKAGE_VERSION):

set(CPACK_PACKAGE_FILE_NAME "$CPACK_PACKAGE_NAME-$CPACK_PACKAGE_VERSION")

CPack 模块的 CMake 文档中讨论了这些变量和更多内容。

【讨论】:

关键是在INCLUDE(CPACK) 之前执行此操作,而且我还必须在它之前设置 CPACK_PACKAGE_VERSION 否则,在包含 CPACK 之前 CPACK_PACKAGE_VERSION 是空白的

以上是关于使用 CPack,在 OSX 上构建时,如何避免在包/捆绑文件名中以后缀 Darwin 结尾?的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 上使用 CPack 生成源代码包

使用 CPack 在 Mac 上打包系统守护进程

如何从 CPack 的源代码版本中排除我的构建目录?

CPack 一次构建多个包的问题

防止 cmake 运行 cpack

CMake/CPack - 生成 Debian 包维护者脚本(特别是 postrm)