如何使用CMake生成Windows DLL版本信息?

4
这非常像于以下内容: 但我认为我可能需要再问一遍,因为自那时以来可能会有所改变。
使用以下CMakeLists.txt文件: 我添加了以下代码块:
add_library(foo SHARED gdcmVersion.cxx)
set_target_properties(foo PROPERTIES VERSION "1.2.3" SOVERSION "4.5")

我本以为这会填充相应版本信息,但实际上它没有:

在此输入图片描述

所以我的问题是:上述两行cmake代码缺少什么才能在详细信息框中正确填充版本/soversion?

我的设置:

  1. Windows 8.1
  2. Visual Studio 2019 / 16.1.2
  3. CMake 3.14.5

更新:我上传了一个minimal-reproducible-example案例:

使用相同的设置,这是我看到的:

在此输入图片描述

生成的version.rc文件是:

$ cat version.rc
// version.rc.in
#define VER_FILEVERSION             3,5,49,0
#define VER_FILEVERSION_STR         "3.5.49.0\0"

#define VER_PRODUCTVERSION          3,5,49,0
#define VER_PRODUCTVERSION_STR      "3.5.49\0"
//
1个回答

2

经过多次尝试和错误,我最终成功地得到了我想要的:

enter image description here

原来重要的部分是:

1 VERSIONINFO
FILEVERSION VER_FILEVERSION
PRODUCTVERSION VER_PRODUCTVERSION
BEGIN
  BLOCK "StringFileInfo"
  BEGIN
    BLOCK "040904E4"
    BEGIN
      VALUE "FileVersion", VER_FILEVERSION_STR
      VALUE "ProductVersion", VER_PRODUCTVERSION_STR
    END
  END
  /* For some reason the ProductVersion would not appear unless I add */
  /* the following section: VarFileInfo */
  BLOCK "VarFileInfo"
  BEGIN
    VALUE "Translation", 0x0409, 1252
  END
END

参考资料:

受以下内容启发:


你的代码出现了错误:错误代码 RC2104:未定义的关键字或关键名称:VER_FILEVERSION - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接