将 fixup_bundle 结果添加到 CPack
Posted
技术标签:
【中文标题】将 fixup_bundle 结果添加到 CPack【英文标题】:Add fixup_bundle result to CPack 【发布时间】:2018-09-05 10:05:53 【问题描述】:如何将使用 fixup_bundle
找到的其他库添加到 CPack?
这是我的 CMake 安装脚本:
install(
TARGETS $PROJECT_NAME
RUNTIME DESTINATION .)
install(
FILES
$PROJECT_SOURCE_DIR/LICENSE
$PROJECT_SOURCE_DIR/COPYRIGHT
$PROJECT_SOURCE_DIR/CHANGELOG
$PROJECT_SOURCE_DIR/DESCRIPTION
DESTINATION .)
install(
CODE
"
include(InstallRequiredSystemLibraries)
include(BundleUtilities)
fixup_bundle($CMAKE_INSTALL_PREFIX/$SERVICE_INSTALL_PREFIX/test.exe \"\" \"\")
"
DESTINATION .
COMPONENT Runtime)
在install
文件夹中,我可以找到我的 EXE 文件、文本内容(许可证、版权等)和所有必需的 DLL 库。
但是当我执行package
目标(使用 NSIS 构建器)时,它只复制 EXE 文件和文本内容,没有额外的 DLL 库。
【问题讨论】:
【参考方案1】:CPack 会将CMAKE_INSTALL_PREFIX
变量替换为正确的变量。但是对于这个字符串$CMAKE_INSTALL_PREFIX
应该在CPack 将执行代码的时候存在。将fixup_bundle
的每个参数包装为一个字符串就足够了。
install(
CODE
"
include(InstallRequiredSystemLibraries)
include(BundleUtilities)
fixup_bundle(\"\$CMAKE_INSTALL_PREFIX/$SERVICE_INSTALL_PREFIX/test.exe\" \"\" \"\")
"
DESTINATION .
COMPONENT Runtime)
【讨论】:
以上是关于将 fixup_bundle 结果添加到 CPack的主要内容,如果未能解决你的问题,请参考以下文章
将数据添加到 MYSQL 数据库的 C 程序 - 未添加结果