1、有名为QT_Projects的工程,其中pro文件为QT_Projects.pro,内容如下
TEMPLATE =
subdirs
SUBDIRS +=
TripClient
Scene
./QT_Advanced_Program/QT_Programma.pro
此段内容的意思为:该工程是包含多个子工程,分别为TripClient 、Scene 等,其中TripClient 、
Scene 实际.pro文件的路径应该为./TripClient /TripClient .pro、./Scene/Scene.pro,但因为子工程文件夹名称和pro同名,故可省略,最后一个QT_Programma.pro则因为子工程文件夹和pro不同名,故需要写全路径。
目录结构如下:
2、
在pro中 加入 include(…/…/xxx.pri)
代表加入.pri子文件
3、在pro中有如下写法
INCLUDEPATH +=
./UI
./UI/CrossFader
目录结构为
则在引用CrossFader.h和ThreadCrossFader.h则两个头文件时则可直接写,如#inclue “CrossFader.h”,否则需写全路径#include “./UI/CrossFader/CrossFader.h”
4、有如下写法
win32{
LIBS += \
-L$$PWD/win32/TEST -ltest
}
unix{
LIBS += \
-L$$PWD/linux/TEST -ltest
}
代表在win32 和unix两种平台下 需要连接的test库路径 -L链接的是.lib所在位置 -l链接是库的名称
5、
定义编译选项
DEFINES += TEST
则在.h或者.cpp中可使用
#ifdef TEST
QString strTest;
#endif
当去掉 DEFINES += TEST 则上段代码无效
另一种用法
DEFINES +=SHARE
SHARE =$$PWD/Share
INCLUDEPATH + = $${SHARE}/Include
双$代表替换 类似于宏
单$()代表执行命令
如DIR代表环境变量路径=D:/Test
$(DIR)/Include则表示D:/Test/Include
另外
DEFINES +=TYPE_NEW
if(contains(DEFINES ,TYPE_NEW){ //此处注意括号位置
SHARE =$$PWD/Share
}else{ //此处注意括号位置
SHARE =$$PWD/NEW
}
此段写在.pro中可根据是否定义TYPE_NEW来更新SHARE的值
6
UI_DIR +=UIFiles 指定ui_*.h所在的路径
MOC_DIR += MOCFiles指定继承QObject的类生成的中间文件的所在路径
RCC_DIR += RCCFiles指定Qt资源文件.qrc生成文件所在路径
7、
DESTDIR= ./xxx
指定编译目标文件所在路径为当前pro所在路径下的xxx文件夹
8、
TARGET =XK_SHDS
指定应用程序名或库名为XK_SHDS