【问题标题】:CPack Deb generator exclude files/targetsCPack Deb 生成器排除文件/目标
【发布时间】:2020-09-13 18:40:11
【问题描述】:
我正在尝试使用 CMake 构建一个包含共享库 (Lua) 的 C++ 项目,我遇到的问题是我只想在构建用于 Linux 的 Tar.gz 或适用于 Windows 的 NSIS 安装程序,在打包 deb 或 rpm 包时,该库应列为依赖项 (liblua5.3-0),但实际上并未打包。
是否有可能基于生成器在 CPack 中排除文件或构建目标?
【问题讨论】:
标签:
cmake
packaging
cpack
software-packaging
【解决方案1】:
我认为答案是有条件地install
我可能会为此设置一个选项,该选项设置在我的顶级 cmake 文件的顶部,然后在我遇到的任何 install 命令中使用它。
option(INSTALL_3RD_PARTY "Installs third party content" OFF)
if(INSTALL_3RD_PARTY)
install(FILES liblua5.3-0 DESTINATION ${CMAKE_INSTALL_PREFIX})
endif()
如果您不喜欢让用户设置太多选项,您可以从${CPACK_GENERATOR} 派生它(如果这是用户定义的)。在我的项目中,我倾向于在我的install 命令之后设置CPACK_GENERATOR,所以这对我来说效果不佳。
if (${CPACK_GENERATOR} EQUAL "DEB")
set(INSTALL_3RD_PARTY OFF)
endif()
if (${CPACK_GENERATOR} EQUAL "TZ")
set(INSTALL_3RD_PARTY ON)
endif()