工作流程:
qmake会先确定当前的平台和编译器,然后加载对应的spec文件(.config结尾),路径为 C:\Qt\Qt5.12.6\5.12.6\msvc2017\mkspecs\ ,这些文件中包含一些预定义的 变量和选项,因此我们需要根据当前的平台阅读相应的spec文件,以便充分利用预定义的变量。
比如 msvc 场景下:
C:\Qt\Qt5.12.6\5.12.6\msvc2017\mkspecs\common\msvc-desktop.conf
C:\Qt\Qt5.12.6\5.12.6\msvc2017\mkspecs\common\msvc-based-version.conf
C:\Qt\Qt5.12.6\5.12.6\msvc2017\mkspecs\common\msvc-version.conf
这三个文件都会被默认加载,然后在根据具体的情况加载 C:\Qt\Qt5.12.6\5.12.6\msvc2017\mkspecs\win32-msvc 路径下的某些文件。
可使用 message($$QMAKESPEC) 查看当前使用的 spec文件。
变量取值:
$$()
:在qmake解析pro文件时,用来获取变量的值
$() : 在makefile运行时,用来获取变量的值
条件:
{ } 是条件语法,和编程语言中的 if 语句意思一样,需要注意的是 左括号 { 必须和条件处于同一行,且 右括号 } 必须单独一行。在右括号尾部使用 else { 可组成 if-else 语法 。
串联条件(逻辑与)
win32{
CONFIG(debug,debug|release){
message("win32 and debug")
}
}
等同于
win32:CONFIG(debug,debug|release){
message("win32 and debug")
}
并联条件(逻辑或)
win32{
message("win32")
}
CONFIG(debug,debug|release){
message("debug")
}
等同于
win32|CONFIG(debug,debug|release){
message("win32 or debug")
}