【亲测可行】QT实现cmake构建增加输出文件版本信息

1 篇文章 0 订阅

步骤1:先准备资源文件VersionInfo.rc.in,放到CmakeLists.txt同一级目录下

# if defined(UNDER_CE)
#  include <winbase.h>
# else
#  include <windows.h>
# endif
VS_VERSION_INFO VERSIONINFO
 FILEVERSION ${PROJECT_VERSION_MAJOR}, ${PROJECT_VERSION_MINOR}, ${PROJECT_VERSION_PATCH}
 PRODUCTVERSION ${PROJECT_VERSION_MAJOR}, ${PROJECT_VERSION_MINOR}, ${PROJECT_VERSION_PATCH}
 FILEFLAGSMASK 0x17L
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x0L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "FileDescription", "MyLibrary Binary"
            VALUE "FileVersion", "${PROJECT_VERSION_MAJOR}, ${PROJECT_VERSION_MINOR}, ${PROJECT_VERSION_PATCH}"
            VALUE "InternalName", "MyLibrary"
            VALUE "LegalCopyright", "Copyright (C) 2019"
            VALUE "OriginalFilename", ""
            VALUE "ProductName", "MyLibrary"
            VALUE "ProductVersion", "${PROJECT_VERSION_MAJOR}, ${PROJECT_VERSION_MINOR}, ${PROJECT_VERSION_PATCH}"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END

步骤2:编写CMakeLists.txt

根据自身实际进行参考,不可无脑拷贝

cmake_minimum_required(VERSION 3.5)

set(CurVersion 6.22.0402.1)
project(QtDeviceMiddleCommonTestTool LANGUAGES CXX VERSION ${CurVersion})


set(OUTPUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/output")
set(INCLUDES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/includes")
set(LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libs")


#..自定义脚本
#版本
if(CMAKE_SYSTEM_NAME MATCHES "Windows")
    message(STATUS "${CurVersion}123asd")
    set(MY_VERSIONINFO_RC "${CMAKE_CURRENT_SOURCE_DIR}/VersionInfo.rc")
    configure_file("${CMAKE_CURRENT_SOURCE_DIR}/VersionInfo.rc.in" "${MY_VERSIONINFO_RC}")
else()
    message(STATUS "${CurVersion}789hjk")
endif()


#..自定义脚本
#输出增加版本VersionInfo.rc
#${PROJECT_NAME}后记得加自己的源文件列表,add_executable本处已省略自身的头文件和源文件
add_executable("${PROJECT_NAME}" ${MY_VERSIONINFO_RC})


#...自定义脚本
#文件最末尾,Windows通过rc增加版本信息,Linux是增加版本号的软连接方式
if(CMAKE_SYSTEM_NAME MATCHES "Windows")
    message(STATUS ${CurVersion})

else()
    SET_TARGET_PROPERTIES("${PROJECT_NAME}${ProductNameSufffix}" PROPERTIES VERSION ${CurVersion} SOVERSION 1)
    message(STATUS ${CurVersion})
endif()

第3部:QT加载CMakelists生成对应工程

右键点击工程--》执行Cmake,会生成VersionInfo.rc,里面的宏也会被替换。

构建工程,查看效果

 

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值