如何从应用程序中找到Windows和Linux的应用程序版本

时间:2016-09-26 16:48:46

标签: c++ linux winapi

我熟悉Windows的GetFileVersionInfoVerQueryValue。我正在寻找一个独立于平台的解决方案。我正在使用boost,因此最好是可以用于两个平台的boost中的东西。 我已经阅读过一个类似于question的视频窗口。

1 个答案:

答案 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将重新生成文件。