cmake - 如何在 CMAKE/CPACK 项目中惯用地设置版本号?

标签 cmake

我正在尝试编辑 CPack 设置,以便输出的包文件中包含正确的版本号。但这还不是全部。我希望 CMake/CPack 也能设置所有更新版本号的地方。 .so 文件也应该被设置。还有什么需要它。

从我坐的地方,CPack documentation appears to be telling us重复我们自己。

如果我什么都不做,输出文件是这样的:

mystuff-0.1.1-Linux.tar.gz

假设版本号应该是 1.2.3。

我认为这是导致所有版本号更改的简约 CPACK 设置——我将这些行放在我的 CMakeLists.txt 文件中:
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "My app is great")
SET(CPACK_PACKAGE_VENDOR "My Name")
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")

SET(CPACK_PACKAGE_VERSION_MAJOR "1")
SET(CPACK_PACKAGE_VERSION_MINOR "3")
SET(CPACK_PACKAGE_VERSION_PATCH "2")

当我构建时,输出文件仍然是 mystuff-0.1.1-Linux.tar.gz
如果我重复自己并这样做:
SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")

现在该变量已设置,但文件仍然是 mystuff-0.1.1-Linux.tar.gz
看来我也得换CPACK_PACKAGE_FILE_NAME
我还有哪些地方需要重新说明版本号?

这感觉不习惯。我一定是遗漏了一些东西才能使这个自动化。我应该在更早的时间点指定变量吗?我还在互联网上看到了一些包含 CPackConfig.cmake 文件的项目——该文件包含覆盖,但我仍然看到一些重复的内容也在发生。

This bug也提到了同样的事情。显然,他们确实希望我们重复自己。 (截至 2015 年)但是,即使是这样,我想知道是否有人找到了解决方法?

如果没有解决方法,如何重新声明所有变量,以便它们最终自动正确设置?例如,执行以下操作是一种使用变量组合版本号的方法
SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")

According to the documentation ,文件名组成如下:

SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}")

可能还有其他变量需要重新设置。如果我必须重述所有内容,那么我究竟需要重述哪些内容才能完成?

最佳答案

确保您有以下行 设置 CPACK_... 变量:

include (CPack)

这是CPACK_PACKAGE_FILE_NAME的地方和其他是自动设置的,因此此时必须已经设置了版本变量(例如 CPACK_PACKAGE_VERSION_MAJOR )。

关于cmake - 如何在 CMAKE/CPACK 项目中惯用地设置版本号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40445763/

相关文章:

android - 如何使用 CMake 依赖于 Android native 代码?

c++ - AirSim/Unity 在 macOS 上构建 ('boost/filesystem.hpp' 文件未找到)

c - GCC -c 选项的 CMake 等价物是什么?

c++ - 如何让 CMake 为目标安装 PDB 文件

c++ - CMake:运行链接命令时出错:%1 不是有效的 Win32 应用程序

CMake:符号链接(symbolic link)文件而不是在安装过程中复制它们

c++ - CMake的package_find冲突如何解决?

cmake - 在 Visual Studio 2019 中配置 CMake 版本

CMake: add_compile_options() 错误与 RELEASE/DEBUG 配置

c++ - 无法使用 CMake 编译简单的 Opencv C++ 文件