QMake 脚本知识点记录
1. 简单工程配置
QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++11CONFIG += debug # debug/release
HEADERS += demo.h # 头文件 列表
SOURCES += main.cpp demo.cpp # 源文件 列表
FORMS += mainwin.ui # 窗体 列表###########################################################HEADERS :应用程序的头文件列表SOURCES :应用程序的源文件列表FORMS :应用程序的 UI(Qt Designer 创建)文件列表LEXSOURCES :应用程序的 LEX 原文件列表
YACCSOURCES :应用程序的 YACC 源文件列表TARGET :应用程序的可执行文件名称DESTDIR :生成的目标文件的存放目录DEFINES :应用程序指定的预定义预处理器符号
INCLUDEPATH :编译器的搜索头文件路径DEPENDPATH :应用程序的依赖查找路径VPATH :寻找补充文件的搜索路径DEF_FILE :应用程序链接的 .def 文件,仅支持 Windows。RC_FILE :应用程序的资源文件,仅支持 Windows。RES_FILE :应用程序链接的资源文件,仅支持 Windows。
###########################################################
2. 平台相关的源文件
contains(QT_ARCH, arm64) {message("arm64")
} else {message("x86")
}contains(QT_ARCH, i386) {message("32-bit")
} else {message("64-bit")
}win32 {SOURCES += demo_win.cpp # windows
}
unix {SOURCES += demo_unix.cpp # unix
}
linux {SOURCES += demo_linux.cpp # linux
}
3. 打印 Qt 环境
message(Qt version: $$[QT_VERSION])
message(Qt is installed in $$[QT_INSTALL_PREFIX])
message(Qt resources can be found in the following locations:)
message(Documentation: $$[QT_INSTALL_DOCS])
message(Header files: $$[QT_INSTALL_HEADERS])
message(Libraries: $$[QT_INSTALL_LIBS])
message(Binary files (executables): $$[QT_INSTALL_BINS])
message(Plugins: $$[QT_INSTALL_PLUGINS])
message(Data files: $$[QT_INSTALL_DATA])
message(Translation files: $$[QT_INSTALL_TRANSLATIONS])
message(Settings: $$[QT_INSTALL_CONFIGURATION])
message(Examples: $$[QT_INSTALL_EXAMPLES])
4. 检查文件是否存在
# 使用 exist() 函数检查文件是否存在。
# 使用 error() 函数停止 qmake 编译。
!exists(main.cpp) {error("main.cpp not found, abort compile")
}
# 如果添加了 network 模块,则把对应的头文件和源文件添加到项目中
contains(QT, network) {message("network build")HEADERS += network.hppSOURCES += network.cpp
}
5. 多条件嵌套
unix {debug {CONFIG += console}
}与以下同:win32:debug {CONFIG += console
}
6. Qt 禁用警告和提示
win32 {QMAKE_CXXFLAGS += wd "4244"
}
unix {QMAKE_CXXFLAGS += -Wno-unused-parameter
}
7. 包含其他项目文件
include(other.pro)# qmake 提供了许多内置函数来处理变量的内容。
# include 函数最常用于包含其他项目文件。