Winapi 如何将版本信息放入多平台程序*nix和win32?

Winapi 如何将版本信息放入多平台程序*nix和win32?,winapi,unix,wix,versioning,Winapi,Unix,Wix,Versioning,我想知道做这件事的标准方法是什么 目前我正在考虑在头文件中添加一系列定义,并在主资源文件win win32中插入该文件,以更新win32中的版本资源,并在*nix中使用一些全局函数来返回此信息 在windows中,使msi安装文件也反映相同的版本。这听起来是一种合理的方法。我不认为有一个标准的方法来做这件事;没有任何真正的跨平台版本报告标准。因为我们希望避免每次点击build时更改version.cpp或等效版本的开销,并因此花费时间进行至少一次编译和链接,所以我们在生成后修改二进制文件 如果您

我想知道做这件事的标准方法是什么

目前我正在考虑在头文件中添加一系列定义,并在主资源文件win win32中插入该文件,以更新win32中的版本资源,并在*nix中使用一些全局函数来返回此信息


在windows中,使msi安装文件也反映相同的版本。

这听起来是一种合理的方法。我不认为有一个标准的方法来做这件事;没有任何真正的跨平台版本报告标准。

因为我们希望避免每次点击build时更改version.cpp或等效版本的开销,并因此花费时间进行至少一次编译和链接,所以我们在生成后修改二进制文件

如果您正在输出ELF或PE格式的可执行文件,您可以使用ELF或PE的一些基本知识和链接器映射来确定要替换的内容,否则您可以在二进制文件中扫描以查找设置的模式,我们使用的模式类似于static const char VERSION[]=[VERSIONBLOCK xxxxxxxxxxxx];并用相关信息替换部分,如上述xxxx部分:

生成日期和时间 制造机器 用户名 例如,svnversion的输出 请注意,如果在这一步之前对二进制文件进行签名或压缩,这将无法很好地工作,但通常您可以设计构建过程,以便在这一步之后进行签名/压缩

我敢肯定,它的一个变体可以扩展到Win32 PE版本元数据以及任何嵌入的版本字符串