0

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

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

我只想控制 FILEVERSION 属性。

4

1 回答 1

1

一种解决方案是将库的版本分解到其标头之一中,并将其包含在内。

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
于 2021-05-20T10:26:42.807 回答