QT中pro文件常用qmake语法

变量

配置QT模块
QT += core gui sql network
QT -= sql
注释
# 开启注释
# DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    
# disables all the APIs deprecated before Qt 6.0.0
添加源文件
SOURCES += \
    main.cpp \
    widget.cpp

SOURCES = *.cpp
SOURCES = 1.cpp 2.cpp 3.cpp
添加头文件
HEADERS += \
    widget.h
添加UI文件
FORMS += \
    widget.ui
指定目标文件名
  • 如果不设置的话则目标文件名为项目名
TARGET = filename
生成目标模板
  • app 生成应用程序,默认
  • lib 生成库文件
TEMPLATE = app
搜索引用外部头文件
INCLUDEPATH += c:/msdev/include 
INCLUDEPATH += d:/stl/include
引用第三方库文件
  • -L 表示库文件所在目录
  • -l 表示具体的库文件名(默认省略通用的前缀和后缀)
  • 目录路径有空格的话需要使用双引号
LIBS += -L/usr/local/lib -lmath
LIBS += c:/mylibs/math.lib

LIBS += "C:/mylibs/extra libs/extra.lib"
指定编译过程产生的中间文件存放路径
MOC_DIR = temp/moc           # moc文件
RCC_DIR = temp/rcc           # rcc文件
UI_DIR = temp/ui             # ui文件
OBJECTS_DIR = temp/obj       # o文件
指定目标文件存放路径
DESTDIR = bin                # exe文件
指定项目配置和编译器选项
  • C++11 -> 开启C++11语法
  • C++14 -> 开启C++14语法
  • warn_off -> 编译器减少警告输出
  • … -> 还有很多选项,需要请查看QT帮助文档
CONFIG += c++11 warn_off
添加自定义变量
  • 自定义变量可以在代码文件中使用
DEFINES += Lin

#ifdef Lin
    qDebug() << "define Lin";
#else
    qDebug() << "not define Lin";
#endif
linux下生成的目标应用程序可双击打开运行
QMAKE_LFLAGS += -no-pie
添加资源文件
RESOURCES += \
    src.qrc
获取变量的值
# 使用$$
message($$TARGET)
跨平台处理
  • 多行时平台参数名与左花括号需在同一行
// window平台
win32 {
    OBJECTS_DIR = c:/myproject/tmp
}

// Linux平台
unix {
    OBJECTS_DIR = ../myproject/tmp
}

// 单行写法
unix:OBJECTS_DIR = ../myproject/tmp
win32:OBJECTS_DIR = c:/myproject/tmp

函数

将指定文件包含到当前项目中
include($$PWD/network/network.pri)
信息打印
# 正常打印信息,打印后继续编译执行
message("This is a message")

# 打印错误信息,打印后停止编译执行
error("An error has occurred in the configuration process.")
判断某个变量是否包含某个值
# contains(variablename, value)
contains(drivers, network) {
      # drivers contains 'network'
      message("Configuring for network build...")
      HEADERS += network.h
      SOURCES += network.cpp
}
条件判断
# 格式一
win32 {
    debug {
    CONFIG += console
    }
}

# 格式二
win32:debug {
    CONFIG += console
}
CONFIG变量条件判断
# 判断第一个参数是否在第二个参数集合中的激活状态,用于区分当前的编译版本是debug还是release
CONFIG = debug
CONFIG += release
CONFIG(release, debug|release):message(Release build!) #will print
CONFIG(debug, debug|release):message(Debug build!) #no print
判断文件是否存在
exists(/local/qt/qmake/main.cpp) {
    SOURCES += main.cpp
}

你可能感兴趣的:(QT,·,随记,qt,pro文件,qmake语法)