有时我们想在编译工程时,使用 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 ,变成自动的。只需下面几个步骤:
- 将脚本文件 get_svn_version.bat 放到工程目录下
- 选择 Qt Creator 左侧的项目标签,选择右侧的构建,添加自定义步骤(参考 Windows下Qt for Android 编译安卓C语言可执行程序),选择 get_svn_version.bat 作为命令,工作目录设定为工程所在目录(version.h将被放在这里)
- 把刚添加的自定义步骤顺序调整到最上面
- 在 main.c(.cpp) 中包含 version.h ,使用 SOURCE_CODE_VERSION 宏
--------
好啦, 经过上面两步的处理,我们就可以在每次编译时把我们的 working copy 的版本信息带入到可执行程序中了,有了这个版本信息,可以给问题排查、兼容性处理带来一些帮助。
分享到:
相关推荐
**Qt Creator 5.0 官方源代码编译版本** Qt Creator是一款强大的跨平台集成开发环境(IDE),专门用于开发使用Qt库的应用程序。它提供了直观的界面、高效的项目管理、代码编辑器、调试工具以及版本控制系统集成,极...
在Qt Creator中,你可以将SQLite的源代码导入为一个新的项目,创建一个.pro配置文件来定义编译选项和依赖项。.pro文件是Qt项目文件,用于指导Qt的构建系统qmake如何编译和链接项目。 步骤1:下载SQLite源代码 访问...
此外,对于希望改进Qt Creator功能或创建自定义版本的开发者,源代码提供了无价的参考资源。 总之,"qt-creator-opensource-src-4.3.1.rar"不仅是Qt Creator的源代码,也是理解现代IDE设计思想和技术实现的宝贵教材...
通过以上步骤,你可以在qtcreator中成功编译并使用Protocol Buffer,同时支持MSVC和mingw编译器。这将使得你的Qt应用具备更广泛的兼容性和可移植性。在实际开发中,根据项目需求,可能还需要处理更多细节,如错误...
Qt Creator集成了多种版本控制系统,如Git,SVN等,方便团队协作和代码管理。 9. **插件系统** Qt Creator具有可扩展性,可以通过插件添加额外的功能,例如代码分析工具、额外的编译器支持等。 10. **跨平台开发...
总结来说,使用Qt Creator作为Linux下的IDE编译和调试Redis源码,可以享受到IDE带来的便利,如代码补全、语法高亮和调试工具。通过设置Makefile和调试配置,我们可以高效地进行源码级调试,深入理解Redis的运行过程...
【Qt Creator快速入门+实战精解+源代码】是一套全面的Qt学习资源,适合初学者和有一定经验的开发者,旨在帮助用户迅速掌握Qt Creator这一强大的集成开发环境,并通过实战项目深化理解。Qt是一个跨平台的应用程序开发...
3. **构建系统**:Qt Creator集成了qmake构建系统,可以自动处理项目的编译和链接过程。同时,它还支持其他构建系统,如CMake。 4. **调试器**:内建的C++调试器帮助开发者查找和修复程序中的错误,支持断点、单步...
在本文中,我们将详细介绍如何使用 Window QtCreator + GCC + OpenOCD 进行 STM32 的编译和调试。首先,我们需要安装相应的软件,包括 QtCreator、GCC、OpenOCD 和 Python。然后,我们将配置 OpenOCD 的环境变量,并...
在本文中,我们将深入探讨如何在Qt Creator这个强大的C++集成开发环境中测试OpenMP样例代码。OpenMP(Open Multi-Processing)是一个用于共享内存并行计算的API标准,广泛应用于多核处理器环境,可以显著提升多线程...
在本文中,我们将深入探讨如何使用QtCreator这一强大的集成开发环境(IDE)来编译和调试VLC媒体播放器的源代码。对于那些热衷于VLC开发的工程师而言,这是一个非常实用的技术指南。 首先,我们需要了解QtCreator。Qt...
4. **构建系统**:Qt Creator支持QMake和CMake构建系统,自动处理编译、链接和部署过程,简化了项目的构建流程。 5. **调试器**:内建的GDB调试器帮助开发者定位和修复代码中的错误,提供断点、单步执行、变量查看...
Qt Creator是一款强大的跨平台集成开发环境(IDE),主要用于开发使用Qt框架的应用程序。这款软件支持C++、QML以及JavaScript编程语言,适用于Windows、Linux、macOS等多种操作系统。免安装版本,如“QtCreator-...
3. **构建项目**:通过选择菜单项或使用快捷键,Qt Creator会自动处理编译和链接过程。 4. **调试**:在代码中设置断点,启动调试器查看运行时信息,定位并修复问题。 5. **部署**:完成开发后,Qt Creator可帮助...
总结来说,QT Creator 5.9.1编译MySQL驱动涉及下载源代码、配置项目、编译驱动、部署驱动以及测试连接等步骤。这个过程对于在Qt环境中开发与MySQL数据库交互的应用至关重要。了解并掌握这些步骤,开发者可以有效地...
### 在Qt Creator上使用QMQTT的详细步骤 对于初学者而言,掌握如何在Qt Creator环境中集成并使用第三方库QMQTT可能具有一定的挑战性。本文将详细介绍如何从零开始配置环境、编译源码、集成到Qt项目,并进行简单的...
值得注意的是,OpenCV从2.4.10版本开始不再为MingW提供预编译库,因此如果想要在MingW环境下使用OpenCV,需要自行编译源代码,或者从第三方资源获取预编译的MingW版本。 配置OpenCV的正确步骤是: 1. 将OpenCV的库...
《Qt及Qt Quick开发实战精解》是一本深入讲解Qt框架和Qt Creator集成开发环境的实战书籍,旨在帮助读者从零基础逐步掌握Qt编程技术。Qt是一个强大的C++图形用户界面库,支持跨平台开发,广泛应用于桌面、移动设备及...
QT Creator是一款广受欢迎的开源集成开发环境(IDE),主要用于编写使用Qt框架的C++应用程序。它提供了丰富的功能,包括代码编辑、调试、构建管理和版本控制等。VSCode(Visual Studio Code)则是由微软开发的一款轻...
Qt Creator是开源的,允许开发者查看、修改和贡献其源代码,促进了社区的发展和持续改进。 1. **Qt框架**:Qt是一个广泛使用的C++库,提供了丰富的图形用户界面(GUI)组件和工具,适用于桌面、移动和嵌入式平台。...