Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从应用程序中查找windows和linux的应用程序版本_C++_Linux_Winapi - Fatal编程技术网

C++ 如何从应用程序中查找windows和linux的应用程序版本

C++ 如何从应用程序中查找windows和linux的应用程序版本,c++,linux,winapi,C++,Linux,Winapi,我熟悉windows的GetFileVersionInfo和VerQueryValue。我正在寻找一个独立于平台的解决方案。我正在使用boost,因此最好是boost中的一些东西,可以用于两个平台。 我读过一篇类似的文章,是以windows为中心的。既然您试图获取可执行文件的自己的版本,为什么不添加一个#define?例如: 版本.h // include guards etc. #define MY_PROGRAM_VERSION "1.2.3" // include guards etc.

我熟悉windows的
GetFileVersionInfo
VerQueryValue
。我正在寻找一个独立于平台的解决方案。我正在使用boost,因此最好是boost中的一些东西,可以用于两个平台。
我读过一篇类似的文章,是以windows为中心的。

既然您试图获取可执行文件的自己的版本,为什么不添加一个
#define
?例如:

版本.h

// include guards etc.
#define MY_PROGRAM_VERSION "1.2.3"
// include guards etc.
#define MY_PROGRAM_VERSION "${PROJECT_VERSION}"
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)

要从
CMakeLists.txt中提取版本,而不是硬编码,请尝试以下操作:

版本.h.模板

// include guards etc.
#define MY_PROGRAM_VERSION "1.2.3"
// include guards etc.
#define MY_PROGRAM_VERSION "${PROJECT_VERSION}"
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)
CMakeLists.txt

// include guards etc.
#define MY_PROGRAM_VERSION "1.2.3"
// include guards etc.
#define MY_PROGRAM_VERSION "${PROJECT_VERSION}"
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\u VERSION
的CMake变量


调用获取模板,填写CMake知道的变量,并将输出写入
version.h
,您可以正常地
#包括
。当版本或模板更改时,CMake将重新生成文件。

既然您正在尝试获取可执行文件的自身版本,为什么不添加一个
#define
?例如:

版本.h

// include guards etc.
#define MY_PROGRAM_VERSION "1.2.3"
// include guards etc.
#define MY_PROGRAM_VERSION "${PROJECT_VERSION}"
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)

要从
CMakeLists.txt中提取版本,而不是硬编码,请尝试以下操作:

版本.h.模板

// include guards etc.
#define MY_PROGRAM_VERSION "1.2.3"
// include guards etc.
#define MY_PROGRAM_VERSION "${PROJECT_VERSION}"
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)
CMakeLists.txt

// include guards etc.
#define MY_PROGRAM_VERSION "1.2.3"
// include guards etc.
#define MY_PROGRAM_VERSION "${PROJECT_VERSION}"
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\u VERSION
的CMake变量


调用获取模板,填写CMake知道的变量,并将输出写入
version.h
,您可以正常地
#包括
。当版本或模板更改时,CMake将重新生成文件。

要获取正在运行的可执行文件自己的版本,还是其他可执行文件的版本?因为如果您需要它自己的版本,您可以添加一个
#define
。@Thomas是的,我需要运行的可执行文件的版本。你能强调一下什么是“定义”吗?你问错了问题。您可以在编译时决定要使用的版本信息,并对其进行设置。没有理由忘记此信息,而只是在运行时再次尝试恢复它。只要使用编译时常量,不管你在哪里调用假设的检索函数。你想得到运行中的可执行文件自己的版本,还是其他可执行文件的版本?因为如果您需要它自己的版本,您可以添加一个
#define
。@Thomas是的,我需要运行的可执行文件的版本。你能强调一下什么是“定义”吗?你问错了问题。您可以在编译时决定要使用的版本信息,并对其进行设置。没有理由忘记此信息,而只是在运行时再次尝试恢复它。只要使用编译时常量,只要调用假设的检索函数即可。因此,版本号在项目的CMAKE中设置。如何在运行时从那里提取它?因此,版本号在项目的CMAKE中设置。如何在运行时从那里提取它?