cmake项目如何设置类似mfc中的文件属性version vs_version_info,如版本号?

1、在你的CMakeLists.txt文件中,添加以下内容

# 定义版本号
set(PROJECT_VERSION_MAJOR 1)
set(PROJECT_VERSION_MINOR 0)
set(PROJECT_VERSION_PATCH 0)

# 生成版本资源文件
configure_file(
  ${CMAKE_CURRENT_SOURCE_DIR}/version.rc.in
  ${CMAKE_CURRENT_BINARY_DIR}/version.rc
  @ONLY
)

# 将资源文件添加到项目中
add_executable(YourProject WIN32 main.cpp version.rc)

在上述代码中,我们首先定义了项目的版本号,然后使用configure_file命令将version.rc.in模板文件配置为生成实际的version.rc文件。这个资源文件将包含我们定义的版本号信息。

  1. 创建一个名为version.rc.in的模板文件,内容如下:
    #include 
    
    VS_VERSION_INFO VERSIONINFO
      FILEVERSION     @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,0
      PRODUCTVERSION  @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,0
      FILEFLAGSMASK   0x3fL
    #ifdef _DEBUG
      FILEFLAGS       0x1L
    #else
      FILEFLAGS       0x0L
    #endif
      FILEOS          VOS__WINDOWS32
      FILETYPE        VFT_APP
    BEGIN
      BLOCK "StringFileInfo"
      BEGIN
        BLOCK "040904E4"
        BEGIN
          VALUE "FileVersion",     "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@"
          VALUE "ProductVersion",  "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@"
          VALUE "CompanyName",     "Your Company"
          VALUE "FileDescription", "Your Description"
          VALUE "ProductName",     "Your Product"
        END
      END
    
      BLOCK "VarFileInfo"
      BEGIN
        VALUE "Translation", 0x409, 1252
      END
    END
    

    在这个模板文件中,我们使用了@PROJECT_VERSION_MAJOR@@PROJECT_VERSION_MINOR@@PROJECT_VERSION_PATCH@来代表实际的版本号。同时,你也可以根据需要修改其他属性,如公司名称、文件描述等。

  2. 使用CMake构建你的项目,生成的可执行文件将包含所定义的版本信息。
  3. 请注意,上述示例中使用了WIN32属性来指定生成一个Windows GUI应用程序(MFC项目)。如果你的项目是一个控制台应用程序,请将WIN32替换为CONSOLE

    这样,你就可以在生成的MFC可执行文件的属性中看到设置的版本信息了。

你可能感兴趣的:(mfc,c++)