如何从应用程序内查找 Windows 和 Linux 的应用程序版本

Uma*_*hta 1 c++ linux winapi

GetFileVersionInfo我对windows很熟悉VerQueryValue。我正在寻找一个独立于平台的解决方案。我正在使用 boost,所以最好是 boost 中可以用于两个平台的东西。我读过一个类似的问题,它是针对 Windows 的。

Tho*_*mas 5

既然您正在尝试获取可执行文件自己的版本,为什么不直接添加一个 呢#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 将重新生成文件。