Qt开发技巧:编写.pro文件,在构建流程中加入命令行的方法
1、在项目构建前执行命令
在项目构建前执行命令cmd | 存在问题 |
---|---|
system(cmd) | 存在执行多次的问题,可以参考message函数的QMake Manual说明 |
优化后的表达式如下,这样此命令只会在构建前执行一次:
!build_pass:system(cmd)
2、在链接前后执行,使用QMAKE_PRE_LINK/QMAKE_POST_LINK
QMake Manual中有QMAKE_PRE_LINK/QMAKE_POST_LINK的说明。
在链接执行前执行命令cmd | 在链接执行后执行命令cmd | 存在问题 |
---|---|---|
QMAKE_PRE_LINK += cmd | QMAKE_POST_LINK += cmd | 只有在源码修改导致重新链接成目标文件时才会执行 |
3、在构建前后插入命令
首先需要弄清楚qmake和make的协作过程:
- qmake.exe会解析.pro文件生成makefile文件,生成makefile。
- 之后会调用make工具进行编译链接等构建操作。
这里使用的QMake变量是QMAKE_EXTRA_TARGETS和PRE_TARGETDEPENS变量。具体用法请参考QMake Manual。
理解下面的处理过程需要了解一些makefile知识。
示例
在.pro文件中加入下面语句
# cmds
# 构造自定义生成目标对象
mybuild.target=pre_build_cmds
win32{
mybuild.commands=$$PWD/UpdatePluginLib.cmd
}else{
}
# 加入到自定义目标对象列表中
QMAKE_EXTRA_TARGETS += mybuild# 加入到构建依赖列表最前面,会最先被执行,这里必须写目标对象名称,不能是mybuild
PRE_TARGETDEPS += pre_build_cmds
查看makefile.Debug文件
可以看到目标被加入到构建依赖的最前面了。pre_build_cmd目标的定义可在makefile文件中找到。
同理如果需要在构建完成后执行一些命令,则可以使用QMake对应的变量POST_TARGETDEPS,将自定义生成目标加入到变量中:
POST_TARGETDEPS += after_build_cmds
使用场景
一般子目录项目需要先构建插件或动态库依赖,然后再将输出文件更新到最终的应用程序项目中,参与最终的构建,一般做法是写批处理脚本,然后手动双击更新。有了上述方法后,一切都可以一键构建。
总结
一般使用第三种方法,前提是需要清楚地了解Qt的构建过程,以及makefile的相关知识。
Qt开发技巧:编写.pro文件,在构建流程中加入命令行的方法相关推荐
- 一篇关于Qt开发技巧的文章收藏
跨平台C++开发:10年Qt开发经验覆盖100多个Qt开发技巧!-控件新闻-慧都网 (evget.com)
- Qt实用技巧:ubuntu发布程序打包流程(解决插件xcb加载失败)
若该文为原创文章,未经允许不得转载 原博主博客地址:长沙红胖子Qt的博客_CSDN博客-Qt开发,图形图像处理,OpenCV图像处理领域博主 原博主博客导航:红胖子网络科技博文大全:开发技术集合(包含 ...
- python删除重复值所在的行数_使用python读取txt文件的内容,并删除重复的行数方法...
注意,本文代码是使用在txt文档上,同时txt文档中的内容每一行代表的是图片的名字. #coding:utf-8 import shutil readDir = "原文件绝对路经" ...
- cat查看tomcat日志 linux_linux怎么使用cat命令查看文件? linux中cat命令的使用方法
Linux系统中查看文件内容时,可以使用cat命令来查看,但是cat命令一般只适合查看文件内容较少的文件.该怎么使用cat命令呢?下面我们就来看看详细的教程. 1.cat命令的语法格式为:cat [参 ...
- Python3实现从txt文件中读取指定行的方法
Python3实现从txt文件中读取指定行的方法 本文实例讲述了Python3实现从文件中读取指定行的方法.分享给大家供大家参考.具体实现方法如下: def getline(the_file_path ...
- python逐行写入csv_python 实现一次性在文件中写入多行的方法
python 实现一次性在文件中写入多行的方法 将要写入的内容 构造 进一个list 中,使用writelines()方法 一次性写入. file_w.writelines(list) file_w. ...
- matlab visa转c,将一个m文件转成c /cpp文件并在VC中进行编译。这种方法有个烦人的地方,每次你都需要把matla...
将一个m文件转成c /cpp文件并在VC中进行编译.这种方法有个烦人的地方,每次你都需要把matla 2016-08-23 1 0 0 暂无评分 其他 1 积分下载 如何获取积分? 将一个m文件转成c ...
- VS调试:未能向文件“obj\Debug\\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs”写入命令行。
错误 19 未能向文件"obj\Debug\\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs&quo ...
- 创建QT项目时只有.pro文件,源文件和头文件
[问题描述] [原因分析] 问题原因:新建工程时没有选择合适的构建套件 [解决方案] 1新建文件 2.选择kits 下面这一步可以根据自己的需要选择相关的Kits 3.此时生成的文件还只有一个.pro ...
最新文章
- SAP WM初阶之TO报表LX10 - Evaluation of movements per storage type
- 5、JUC--实现 Callable 接口
- 04-树7 二叉搜索树的操作集(c语言实现)
- 2017 Multi-University Training Contest - Team 2——HDU6045HDU6047HDU6055
- Ansible 详解2-Playbook使用
- vs2010 C#链接 ACCESS数据库
- Mask R-CNN官方实现“又”来了!基于PyTorch,训练速度是原来2倍
- linux常用命令之文件管理
- bzoj 1799: [Ahoi2009]self 同类分布(数位DP)
- 金蝶凭证序时簿在哪_金蝶K3总账凭证查询序时簿能否显示何引出核算项目
- 最新 Linux 命令总结 大全
- 【数据科学家】如何成为一名数据科学家?
- 用WinDbg探索CLR世界 [4] 方法的调用机制
- 这个AI算法可以生成动漫人物-styleGAN2神经网络模型
- 自助订餐管理系统(小程序+后台源码+数据库)
- 使用RootTools实现对Android系统文件的读写
- 如何快速批量修改文件名
- 谷歌浏览器恐龙游戏开挂秘诀
- 当excel不够用时,如何利用Access进行数据分析?
- 良心推荐:看完这5部BBC神级纪录片,英语水平提升几个Level!
热门文章
- iOS HTML标签字符实体,转译字符串归类大全 【转载】
- 英语----情态动词(下)
- Linux 格式化磁盘命令mkfs
- 《当程序员的那些狗日日子》(三十六)无名的配角
- WF4.0 基础篇 (二十九) WorkflowInspectionServices
- python转为字节_将字节转换为python中的位
- vue——去除白色边框
- 中文邮件营销html模版,怎么制作邮件营销模板?— —邮件格式
- vba excel 退出编辑状态_VBA小常识(15)—Application对象
- C++中的IPv6网络程序设计