C++ 如何从应用程序中查找windows和linux的应用程序版本
我熟悉windows的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.
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中设置。如何在运行时从那里提取它?