CPack Deb 生成器排除 files/targets

CPack Deb generator exclude files/targets

我正在尝试使用 CMake 构建一个包含共享库 (Lua) 的 C++ 项目,我遇到的问题是我只想使用 Lua 发送包在为 Linux 构建 Tar.gz 或为 Windows 构建 NSIS 安装程序时,在打包 deb 或 rpm 包时,库应列为依赖项 (liblua5.3-0) 但实际上不是打包。

是否有可能基于生成器在 CPack 中排除文件或构建目标?

我认为答案是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()