0

我正在尝试使用包含共享库 (Lua) 的 CMake 构建 C++ 项目,我遇到的问题是我只想在构建适用于 Linux 的 Tar.gz 或适用于Windows,在打包 deb 或 rpm 包时,该库应列为依赖项(liblua5.3-0),但实际上并未打包。

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

4

1 回答 1

0

我认为答案是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}是否是用户定义的。在我的项目中,我倾向于CPACK_GENERATOR在我的install命令之后设置,所以这对我来说效果不佳。

if (${CPACK_GENERATOR} EQUAL "DEB")
  set(INSTALL_3RD_PARTY OFF)
endif()
if (${CPACK_GENERATOR} EQUAL "TZ")
  set(INSTALL_3RD_PARTY ON)
endif()
于 2020-05-27T10:48:02.160 回答