-
#:注释一行
-
QT:此项目中使用的Qt modules列表
-
CONFIG:此项目中使用的配置选项
-
TARGET:目标输出文件的名字
-
TEMPLATE:当生成二进制文件时项目的模版,例如app,lib
-
平台下使用
windows { SOURCES += SysInfoWindowsImpl.cpp HEADERS += SysInfoWindowsImpl.h } linux { } unix { } macx { }
-
嵌套使用
windows { SOURCES += SysInfoWindowsImpl.cpp HEADERS += SysInfoWindowsImpl.h debug { # 等价于if (windows && debug) SOURCES += DebugClass.cpp HEADERS += DebugClass.h } }
-
条件判断
windows|unix { SOURCES += SysInfoWindowsAndLinux.cpp } else:macx { SOURCES += SysInfoMacImpl.cpp } else { SOURCES += UltimateGenericSources.cpp }
操作符说明
- =:给变量赋值
- +=:给变量列表添加值
- -=:给列表移除值
- *=:仅在该值不存在的情况下才添加到列表中
- ~=:用指定的值替换符合正则表达式的任意值
函数
-
定义一个变量,并使用message()函数,此函数编译时会发出信息在编译输出框
COMPILE_MSG = "Compiling on" windows { # 编译框输出 Project MESSAGE: Compiling on windows message($$COMPILE_MSG windows) }
-
error(string):显示字符串并立即退出编译
-
exists(filename):测试是否存在filename
-
include(filename):将其它.pro文件添加进来
导出导入库
DEFINES += GALLERYCORE_LIBRARY
:编译标志,让编译器知道何时应该导入或导出库的符号gallery-core_global.h
:Qt提供的语法糖,用来减轻跨平台库的痛苦Q_DECL_EXPORT
:我们正在编译library库Q_DECL_IMPORT
:我们正在使用共享库编译你的应用程序- GALLERYCORE_EXPORT宏使符号变为pubic可见
- 静态库:1)增加编译时间。每当库有任何修改,就要重新编译。2)更紧密的耦合。多个应用程序不能链接到此库,每一个都必须嵌入此静态库
-
LIBS:此变量是链接库到这个工程。-L提供路径,-l提供库名字
LIBS += -L<pathToLibrary> -l<libraryName>
-
指示库头文件的位置
INCLUDEPATH += $$PWD/../gallery-core DEPENDPATH += $$PWD/../gallery-core
-
$$PWD
:此变量表示当前.pro文件的绝对路径 -
$$OUT_PWD
:此变量表示输出目录的绝对路径 -
depends:表示gallery-core必须在gallery-desktop之前编译built
gallery-desktop.depends = gallery-core
qmake编译过程
- 蓝色方框是命令,波浪形方框是文件
1)【qmake】命令与.pro文件一起执行,在项目文件基础上生成一个Makefile文件
2)【make】命令调用其他命令来生成中间文件
3)【uic】命令全称User Interface Compiler。此命令会将所有的.ui文件生成相关的ui_*.h头文件以便能在自己对应的.cpp文件引用
4)【moc】命令接收每一个包含Q_OBJECT宏的类(与超类QObject配对),并生成中间moc_*.cpp文件,里面包含了信号槽工作所需的一切
5)【g++】命令被执行,将所有源文件和中间的moc文件编译成.o文件,最后链接成二进制可执行程序