我熟悉Windows的GetFileVersionInfo
和VerQueryValue
。我正在寻找一个独立于平台的解决方案。我正在使用boost,因此最好是可以用于两个平台的boost中的东西。
我已经阅读过一个类似于question的视频窗口。
答案 0 :(得分:4)
由于您尝试获取可执行文件的版本,为什么不添加#define
?例如:
<强> version.h
强>
// include guards etc.
#define MY_PROGRAM_VERSION "1.2.3"
要从CMakeLists.txt
而不是硬编码中提取版本,请尝试以下操作:
<强> version.h.template
强>
// include guards etc.
#define MY_PROGRAM_VERSION "${PROJECT_VERSION}"
<强> 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)
我假设您已经拥有类似project(...)
行的内容,以配置版本。其中,它设置了一个名为PROJECT_VERSION
的CMake变量。
configure_file
调用接受模板,填充CMake知道的变量,并将输出写入version.h
,您可以正常#include
。当版本或模板更改时,CMake将重新生成文件。