既然您正在尝试获取可执行文件自己的版本,为什么不直接添加一个 呢#define
?例如:
version.h
// include guards etc.
#define MY_PROGRAM_VERSION "1.2.3"
Run Code Online (Sandbox Code Playgroud)
要从您的版本中提取版本CMakeLists.txt
而不是硬编码,请尝试以下操作:
version.h.template
// include guards etc.
#define MY_PROGRAM_VERSION "${PROJECT_VERSION}"
Run Code Online (Sandbox Code Playgroud)
CMakeLists.txt
cmake_minimum_required(VERSION 3.0) # Use higher if you need, lower won't work.
project(test VERSION 1.2.3) # The one and only place where you define your version!
configure_file(version.h.template version.h)
Run Code Online (Sandbox Code Playgroud)
我假设您已经有类似的project(...)
行来配置版本。其中,它设置了一个名为 的 CMake 变量PROJECT_VERSION
。
该configure_file
调用采用模板,填充 CMake 知道的变量,并将输出写入version.h
,这是您#include
通常可以做到的。当版本或模板发生更改时,CMake 将重新生成文件。