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)