2016-09-26 53 views
0

对于windows,我熟悉GetFileVersionInfoVerQueryValue。我正在寻找一个独立于平台的解决方案。我正在使用boost,所以最好在boost中提供一些可用于这两个平台的东西。 我读过一个类似于question,这是关注窗口。如何从应用程序中找到适用于Windows和Linux的应用程序版本

+1

你想获得正在运行的可执行文件的_own_版本或其他可执行文件的版本吗?因为如果你需要自己的版本,你可以为它添加一个'#define'。 – Thomas

+0

@Thomas是的,我需要正在运行的可执行文件的版本。你可以强调什么会进入#define? –

+0

你在问错误的问题。 **您**决定使用的版本信息,并在编译时进行设置。没有理由忘记这些信息,只是试图在运行时再次恢复它。只要使用编译时常量,无论您何时调用假设的检索函数。 – IInspectable

回答

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

+1

因此,版本号在项目的CMAKE中设置。如何在运行期间从那里提取它? –

+0

优秀的问题,我会编辑... – Thomas

相关问题