`
king_tt
  • 浏览: 2276289 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Qt Creator自动使用svn源代码版本号编译

 
阅读更多

有时我们想在编译工程时,使用 svn 的源代码版本号来作为 build 的一个子版本号;或者只是为了识别某个发布版本,与源代码对应起来。

在 Linux 下面有很多的解决方案,使用 svn 工具和一些 shell 命令再加上 -D 选项就可以达到上述目的。

在 Windows 下,使用 Qt Creator 作为开发环境,使用 TortoiseSVN 作为代码管理的客户端工具,该如何实现这个功能呢?

其实主要有两个步骤:一步是如何自动获取 svn 版本号;另一步是如何使用这个版本号,让其自动进入编译过程,在生成的可执行程序中可以访问。

自动获取 svn 控制的源码版本号

TortoiseSVN 有个工具 SubWCRev 可以获取到 working copy 的版本号,具体命令细节可以使用 SubWCRev /? 来查看。

下面是我写的一个 Windows 脚本,自动干这个事情。

@echo off

for /f "delims=" %%t in ('SubWcRev %CD% -f ^| findstr "Updated to revision"') do set version=%%t

if "%version%" equ "" (
  for /f "delims=" %%t in ('SubWcRev %CD% -f ^| findstr "Mixed revision range"') do set version=%%t 
  if "%version%" equ "" (
    echo "version string was empty"
    goto ERROR_EXIT
  ) else (
    echo "version:" %version%
  )
) else (
  echo "version:" %version%
)

REM
REM version = "Updated to revision 12345" , or,  "Mixed revision range 34046:34064"
REM 
for /f "tokens=4,*" %%a in ("%version%") do (
  REM echo %%a
  set version=%%a

  if "%version%" equ "" (
    echo "version number was empty"
    goto ERROR_EXIT
  )
  
  goto FIND_VERSION
)

:FIND_VERSION


REM
REM generate version.h
REM 
echo #ifndef VERSION_H > version.h
echo #define VERSION_H >> version.h
echo #define SOURCE_CODE_VERSION "%version%" >> version.h
echo #endif >> version.h

exit 0

:ERROR_EXIT

REM
REM generate version.h with #error to tell C compiler stop
REM 
echo "generate #error to stop C compiler"
echo #ifndef VERSION_H > version.h
echo #define VERSION_H >> version.h
echo #error "could not extract source code version" >> version.h
echo #endif >> version.h

exit 1

在上面的脚本中, 做了几件事情:

  • 调用 SubWCRev 获取 working copy 版本信息
  • 根据 "Updated to revision" 或者 "Mixed revision range" 来定位版本信息,提取对应的行
  • 分析版本字符串,提取数字版本号
  • 生成头文件 version.h

具体就不再赘述,看脚本应该很清楚,for、if 等脚本命令语法不清楚的,可以搜索,或者以 /? 为参数查看帮助。


将源码版本号编译进可执行文件

我们在前面获取 svn 源码版本号的脚本中生成了一个头文件 version.h ,定义了 SOURCE_CODE_VERSION 这个宏,只要在需要使用版本号的地方,直接使用这个宏即可;当然前提是包含 version.h 头文件,这样在编译时就把源码版本号带进来了。

这个过程,可以结合 Qt Creator ,变成自动的。只需下面几个步骤:

  1. 将脚本文件 get_svn_version.bat 放到工程目录下
  2. 选择 Qt Creator 左侧的项目标签,选择右侧的构建,添加自定义步骤(参考 Windows下Qt for Android 编译安卓C语言可执行程序),选择 get_svn_version.bat 作为命令,工作目录设定为工程所在目录(version.h将被放在这里)
  3. 把刚添加的自定义步骤顺序调整到最上面
  4. 在 main.c(.cpp) 中包含 version.h ,使用 SOURCE_CODE_VERSION 宏
--------
好啦, 经过上面两步的处理,我们就可以在每次编译时把我们的 working copy 的版本信息带入到可执行程序中了,有了这个版本信息,可以给问题排查、兼容性处理带来一些帮助。

分享到:
评论

相关推荐

    Qt Creator 5.0 官方源代码编译版本

    **Qt Creator 5.0 官方源代码编译版本** Qt Creator是一款强大的跨平台集成开发环境(IDE),专门用于开发使用Qt库的应用程序。它提供了直观的界面、高效的项目管理、代码编辑器、调试工具以及版本控制系统集成,极...

    SQlite.zip 使用Qt Creator编译sqlite3

    在Qt Creator中,你可以将SQLite的源代码导入为一个新的项目,创建一个.pro配置文件来定义编译选项和依赖项。.pro文件是Qt项目文件,用于指导Qt的构建系统qmake如何编译和链接项目。 步骤1:下载SQLite源代码 访问...

    qt-creator-opensource-src-4.3.1.rar 源代码

    此外,对于希望改进Qt Creator功能或创建自定义版本的开发者,源代码提供了无价的参考资源。 总之,"qt-creator-opensource-src-4.3.1.rar"不仅是Qt Creator的源代码,也是理解现代IDE设计思想和技术实现的宝贵教材...

    QT,qtcreator编译protocol buffer,支持编译MSVC,mingw版本

    通过以上步骤,你可以在qtcreator中成功编译并使用Protocol Buffer,同时支持MSVC和mingw编译器。这将使得你的Qt应用具备更广泛的兼容性和可移植性。在实际开发中,根据项目需求,可能还需要处理更多细节,如错误...

    《Qt Creator快速入门》代码

    Qt Creator集成了多种版本控制系统,如Git,SVN等,方便团队协作和代码管理。 9. **插件系统** Qt Creator具有可扩展性,可以通过插件添加额外的功能,例如代码分析工具、额外的编译器支持等。 10. **跨平台开发...

    使用Qt Creator作为Linux IDE,实现Redis源码编译和断点调试

    总结来说,使用Qt Creator作为Linux下的IDE编译和调试Redis源码,可以享受到IDE带来的便利,如代码补全、语法高亮和调试工具。通过设置Makefile和调试配置,我们可以高效地进行源码级调试,深入理解Redis的运行过程...

    Qt Creator快速入门+实战精解+源代码

    【Qt Creator快速入门+实战精解+源代码】是一套全面的Qt学习资源,适合初学者和有一定经验的开发者,旨在帮助用户迅速掌握Qt Creator这一强大的集成开发环境,并通过实战项目深化理解。Qt是一个跨平台的应用程序开发...

    Qt Creator快速入门pdf+代码

    3. **构建系统**:Qt Creator集成了qmake构建系统,可以自动处理项目的编译和链接过程。同时,它还支持其他构建系统,如CMake。 4. **调试器**:内建的C++调试器帮助开发者查找和修复程序中的错误,支持断点、单步...

    window qtcreator + gcc +openocd 编译调试stm32

    在本文中,我们将详细介绍如何使用 Window QtCreator + GCC + OpenOCD 进行 STM32 的编译和调试。首先,我们需要安装相应的软件,包括 QtCreator、GCC、OpenOCD 和 Python。然后,我们将配置 OpenOCD 的环境变量,并...

    Qt creator下测试Openmp样例代码

    在本文中,我们将深入探讨如何在Qt Creator这个强大的C++集成开发环境中测试OpenMP样例代码。OpenMP(Open Multi-Processing)是一个用于共享内存并行计算的API标准,广泛应用于多核处理器环境,可以显著提升多线程...

    QtCreator编译调试vlc

    在本文中,我们将深入探讨如何使用QtCreator这一强大的集成开发环境(IDE)来编译和调试VLC媒体播放器的源代码。对于那些热衷于VLC开发的工程师而言,这是一个非常实用的技术指南。 首先,我们需要了解QtCreator。Qt...

    qt creator 2.6.1商用版

    4. **构建系统**:Qt Creator支持QMake和CMake构建系统,自动处理编译、链接和部署过程,简化了项目的构建流程。 5. **调试器**:内建的GDB调试器帮助开发者定位和修复代码中的错误,提供断点、单步执行、变量查看...

    QtCreator-4.6.1免安装

    Qt Creator是一款强大的跨平台集成开发环境(IDE),主要用于开发使用Qt框架的应用程序。这款软件支持C++、QML以及JavaScript编程语言,适用于Windows、Linux、macOS等多种操作系统。免安装版本,如“QtCreator-...

    QtCreator帮助文档.zip

    3. **构建项目**:通过选择菜单项或使用快捷键,Qt Creator会自动处理编译和链接过程。 4. **调试**:在代码中设置断点,启动调试器查看运行时信息,定位并修复问题。 5. **部署**:完成开发后,Qt Creator可帮助...

    qtcreator 5.9.1 mysql 编译的驱动

    总结来说,QT Creator 5.9.1编译MySQL驱动涉及下载源代码、配置项目、编译驱动、部署驱动以及测试连接等步骤。这个过程对于在Qt环境中开发与MySQL数据库交互的应用至关重要。了解并掌握这些步骤,开发者可以有效地...

    在Qt creator上使用QMQTT详细步骤

    ### 在Qt Creator上使用QMQTT的详细步骤 对于初学者而言,掌握如何在Qt Creator环境中集成并使用第三方库QMQTT可能具有一定的挑战性。本文将详细介绍如何从零开始配置环境、编译源码、集成到Qt项目,并进行简单的...

    QT Creator + Opencv4.x + Libtorch1.7配置1

    值得注意的是,OpenCV从2.4.10版本开始不再为MingW提供预编译库,因此如果想要在MingW环境下使用OpenCV,需要自行编译源代码,或者从第三方资源获取预编译的MingW版本。 配置OpenCV的正确步骤是: 1. 将OpenCV的库...

    《Qt 以及Qt creator实战经典》原版带书签附 +源代码

    《Qt及Qt Quick开发实战精解》是一本深入讲解Qt框架和Qt Creator集成开发环境的实战书籍,旨在帮助读者从零基础逐步掌握Qt编程技术。Qt是一个强大的C++图形用户界面库,支持跨平台开发,广泛应用于桌面、移动设备及...

    QT Creator vscode黑色风格主题配置文件

    QT Creator是一款广受欢迎的开源集成开发环境(IDE),主要用于编写使用Qt框架的C++应用程序。它提供了丰富的功能,包括代码编辑、调试、构建管理和版本控制等。VSCode(Visual Studio Code)则是由微软开发的一款轻...

    qtcreator4.3.1源码

    Qt Creator是开源的,允许开发者查看、修改和贡献其源代码,促进了社区的发展和持续改进。 1. **Qt框架**:Qt是一个广泛使用的C++库,提供了丰富的图形用户界面(GUI)组件和工具,适用于桌面、移动和嵌入式平台。...

Global site tag (gtag.js) - Google Analytics