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)

posted @   狂奔~  阅读(1410)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 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 重磅开源!
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示