【问题标题】:How do I generate Windows DLL versioning information with CMake?如何使用 CMake 生成 Windows DLL 版本信息?
【发布时间】:2019-09-04 15:38:27
【问题描述】:

这非常类似于:

但我想我可能会再问一次,因为从那以后可能发生了一些变化。

使用以下 CMakeLists.txt 文件:

我附加以下代码块:

add_library(foo SHARED gdcmVersion.cxx)
set_target_properties(foo PROPERTIES VERSION "1.2.3" SOVERSION "4.5")

我本以为这会填充相应的版本信息,但它不在我这边:

所以我的问题是:上面两行 cmake 代码实际上缺少什么,以便在详细信息框中填充正确的版本/解决方案?

我的设置:

  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"
//

【问题讨论】:

    标签: windows dll cmake


    【解决方案1】:

    经过多次尝试和错误,我能够正确地得到我想要的:

    原来重要的部分是:

    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
    

    参考资料:

    灵感来自:

    【讨论】:

      猜你喜欢
      • 2011-10-05
      • 2011-09-23
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 2015-12-04
      • 1970-01-01
      相关资源
      最近更新 更多