QMake学习
原文:https://www.cnblogs.com/vkang/articles/10237033.html
https://www.iteye.com/blog/wan-2004-1258380
qmake的pro文件中有这个变量QMAKE_EXTRA_TARGETS 这个可以理解为额外编译目标、还有PRE_TARGETDEPS可以理解为预编译目标依赖 ,比如下面这个
mybuild.target=mybuild win32{ mybuild.commands=${COPY} ../project/libname-mingw.a libname.a }else{ mybuild.commands=${COPY} ../project/libname-gcc.a libname.a } QMAKE_EXTRA_TARGETS += mybuild PRE_TARGETDEPS += mybuild
像上面这个就是定义了一个在Makefile中的一个编译目标mybuild
然后make的时候,在我们编译目标文件之前就执行mybuild。这样就保证了编译时候库文件就拷贝到编译目录里面。
不需要在QCreator里面设置编译步骤去拷贝了,其commands 里面还可以直接调用本地脚本执行更多的方法。
TARGET:
编译生成的目标文件名字
ex:
TARGET = test
DESTDIR
生成的文件目录
ex:
DESTDIR = /home/linux/Vkang/tftproot
QMAKE_CXXFLAGS
编译器选项
ex:
QMAKE_CXXFLAGS += -Wno-psabi
DEFINES:
编译添加宏
ex:
DEFINES += QT_DEPRECATED_WARNINGS
contains:
包含某个字符:
ex:
contains(CONFIG,ARM)
{
functions
}
message:
打印信息:
ex:
message("****** build for ARM - Release ******")
PRE_TARGETDEPS:
工程构建前的依赖
ex:PRE_TARGETDEPS += buildnumber version.h
QMAKE_EXTRA_TARGETS:
工程运行前执行的其他命令:
ex:
QMAKE_EXTRA_TARGETS += updateBuildNumber updateVersion
{
PRE_TARGETDEPS和QMAKE_EXTRA_TARGETS结合使用,在构建工程前执行的指令
updateBuildNumber.target=buildnumber //target名字
updateBuildNumber.depends=FORCE//target依赖
updateBuildNumber.commands=$$PWD/script/updatebuildnumber.sh $$PWD //target执行的指令
updateVersion.target=version.h//target名字
updateVersion.depends=buildnumber//target依赖
updateVersion.commands=$$PWD/script/updateversion.sh $$PWD//target执行的指令
PRE_TARGETDEPS += buildnumber version.h //工程构建前的依赖 上边的target名字
QMAKE_EXTRA_TARGETS += updateBuildNumber updateVersion
工程在构建之前会先执行buildnumber对应的指令,然后在执行version.h对应的指令
}
POST_TARGETDEPS :
工程构建后依赖动作:
ex:
copy_deps.target=copy
copy_deps.depends=FORCE
copy_deps.command = copy.sh
POST_TARGETDEPS += copy
QMAKE_EXTRA_TARGETS += copy_deps
LIBS:
工程编译依赖的库:
ex:
LIBS += -L/user/lib -lts
INCLUDEPATH:
工程编译头文件查找路径
ex:
INCLUDEPATH += $$PWD/video
include():
此工程包含该pri文件
ex:
include($$PWD/video/video.pri)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决