我维护一个使用CMake作为其构建系统的C ++框架/库。框架的版本反映在名为VERSION
的文件中(与许多开源库一样)。
我想使用VERSION
作为输入来生成带有版本字符串的C ++头文件。我还希望这种情况在重建过程中发生,而不仅仅是在重建项目文件时发生。如果VERSION
是一个依赖项,那么希望仅在VERSION
发生更改时才创建头文件。
我熟悉CMake中使用file()
命令来阅读VERSION
比赛的技术,例如
file(STRINGS "VERSION" FRAMEWORK_VERSION)
然后使用configure_file
命令生成文件,例如:
configure_file(version.h.in version.h)
但这仅在生成项目文件的过程中生成头文件。如果VERSION
文件已更改,则在重新构建(即运行cmake --build .
)时将不会重新生成版本头文件。
我知道我可以像在CMake宏中运行的Python脚本那样使用,并且始终在构建过程中创建版本标头,但是我觉得这很烦人。
这里的最佳做法是什么?
仅使用CMake是否有可能解决这个问题?