从外部资源管理 VS_VERSION_INFO FILEVERSION

Managing VS_VERSION_INFO FILEVERSION from external resource

我正在使用 VS2019。我有一个解决方案,我有几个共享公共静态库的 C++ 项目。为了管理版本信息,我使用版本资源。 我对可执行文件所做的唯一修改是更改库的代码。所以我希望 exec 的版本由我的 lib 的版本决定。

我在考虑是否可以根据 lib 的版本动态更改我的可执行文件的版本,呃外部资源。例如作为预编译事件?

我只想控制 FILEVERSION 属性。

一种解决方案是将库的版本提取到其中一个 headers 中,并将其包括在内。

include/MyLib/Version.rh:

#pragma once

#define MYLIB_VERSION_STR()   "1.0.0"
#define MYLIB_VERSION_COMMA() 1, 0, 0, 0

然后您可以 #include 将它放入库的 RC 文件以及您的项目的文件中,并在 VERSION 资源中使用它:

#include <MyLib/Version.rh>

VS_VERSION_INFO VERSIONINFO
 FILEVERSION MYLIB_VERSION_COMMA()
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904B0"
        BEGIN
            VALUE "FileVersion", MYLIB_VERSION_STR()
        END
    END
END