【问题标题】:How to use CPack to pack several cmake build results?如何使用 CPack 打包几个 cmake 构建结果?
【发布时间】:2020-01-14 02:39:42
【问题描述】:

因为我必须为 x86 和 arm 平台构建静态库和共享库。因此,使用相同的 CMakeLists.txt,我必须使用不同的配置运行它四次。我想使用 CPack 将这些库打包到一个 tar 文件中。但是,似乎只有最后的 cmake 构建结果会包含在 tar 文件中。

对于这个问题有什么想法吗?

这是我的 CMakeLists.txt 的一部分:

install(FILES api_cpp.h api_c.h  DESTINATION api_lib/include)
install(TARGETS lib
ARCHIVE DESTINATION api_lib/${lib_folder}
LIBRARY DESTINATION api_lib/${lib_folder})

INCLUDE(CPack)
SET(CPACK_GENERATOR "TGZ")

【问题讨论】:

    标签: c++ cmake cpack


    【解决方案1】:

    显然,您使用单一配置生成器——这意味着您在同一个构建目录中不能有多个特定的构建配置。实际上,即使对于 多配置生成器 也存在问题(至少对于 CMake

    要制作一个包,应该运行 CMake,它会生成构建文件,然后构建一个项目,最后可以制作一个包(例如,w/make package)。最后一个动作运行 CPack,它执行make install DESTDIR=<some-temporary-dir>,然后cpack 只是将目录压缩成一个存档。因此,拥有一个具有唯一配置的构建目录,不可能有一个只有少数配置的存档。

    为了满足您的需求,您应该运行 CMake 4 次并安装到同一位置,然后将该目录打包到一个包中。可以使用 CMake+CPack 完成,但恕我直言,使用简单的 shell 脚本更容易:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2020-10-15
      • 2012-04-22
      • 1970-01-01
      相关资源
      最近更新 更多