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)

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)

猜你喜欢

转载自www.cnblogs.com/xiangtingshen/p/12095404.html