原文: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)