QT .PRO编写记录

来源:互联网 发布:信捷usb编程电缆和三菱 编辑:程序博客网 时间:2024/06/08 05:25

帮助文档

查看帮助文档直接在.pro文件下按F1,或官方网站说明

构成元素

  • 变量Variables:用于维护一个字符串列表,qmake依此配置相应信息比如 HEADERS,SOURCES,LIBS,DEFINES,所有的变量请看帮助文档,空格用于分隔字符串,如果字符串中包涵空格需要用双引号,eg:DEST = "Program Files"

    Variable Contents CONFIG General project configuration options.注意如果是同一配置项的不同选择,以最后一个指定为最终选eg:CONFIG = debug,CONFIG += release,以release编译。 DESTDIR The directory in which the executable or binary file will be placed. FORMS A list of UI files to be processed by the user interface compiler (uic). HEADERS 工程build中使用到的头文件列表 QT 工程中使用到的qt模块列表,也可以理解就是使用了哪些qt库。 LIBS 第三方库列表。用来添加除了qt库之外的库。eg:LIBS += -L/usr/local/lib -lmath -L路径(可以用INCLUDEPATH来指定),-l库名 RESOURCES 工程build中使用到的.qrc资源文件列表 SOURCES 工程build中使用到的源文件列表 TEMPLATE 指定编译输出的是app还是dll,或者plugin.这里提供的有app,lib,aux,subdirs,vcapp,vclib,vcsubdirs
  • 备注Comments
    #号注释。

  • 函数和控制流程

    • Built-in Functions:具体的函数看可查看Replace FunctionsTest Functions .使用请参看 qmake Language中的相应部分。
    • Control Flow

一些语法规则

  • 操作符(operators)

    • = : 赋值
    • -= :移除
    • += :附加
    • *= :附加唯一值(即只有变量表中不存在该值才添加)
    • ~= :替换

      DEFINES ~= s/QT_[DT].+/QT

      DEFINES 中任何以QT_D或者QT_T开始的字符都被替换为QT

    • $$ :提取变量内容。

        EVERYTHING = $$SOURCES $$HEADERS  message("The project contains the following files:")  message($$EVERYTHING)
  • 执行范围(scopes)
    像if的语句块一样,当条件成立就执行scope里面的语句。

    1. 注意{必须与条件在同一行。

        <condition> {      <command or definition>      ...  }
    2. 条件可以使用{}嵌套,也可以使用:省去书写{}的麻烦,单条执行可直接使用:。如下:

       macx {     CONFIG(debug, debug|release) {         HEADERS += debugging.h     } } macx:CONFIG(debug, debug|release) {     HEADERS += debugging.h } win32:DEFINES += USE_MY_STUFF
    3. 上面中的相当于AND条件,如果要实现或条件可以使用|

        win32|macx {      HEADERS += debugging.h  }
    4. CONFIG表中中定义的变量,都可以直接拿来当做scopes语句的条件。eg:

      ```  CONFIG += opengl  opengl {      TARGET = application-gl  } else {      TARGET = application  }```
    5. 平台相关的条件变量有win32, macx, 和unix,以及Qt's mkspecs目录下提供的各平台目录也可以当成scopes的条件变量来判断比如

        message($$QMAKESPEC)  linux-g++ {      message(Linux)  }

提供的一些函数

  • include()

    include(other.pro)
  • 信息输出message(),error(),后者会中止继续执行qmake

  • 文件是否存在函数 exists()

     !exists( main.cpp ) {      error( "No main.cpp file found" ) #执行完后退出  }
  • 变量是否有value值判断contains(variablename, value)
  • 变量个数判断 count(variablename, number)
  • 测试函数或变量名是否定义,与DEFINES无关defined(name[, type])
  • CONFIG(config)这个还可以当函数使用。测试变量表CONFIG中是否有某个变量

不同编译器下的条件判断

DEFINES += VBCALLmessage($$QMAKESPEC)win32-g++{        QMAKE_LFLAGS = -static-libgcc -static-libstdc++ #anzyelay add        contains(DEFINES,VBCALL){                QMAKE_LFLAGS += -Wl,--subsystem,windows,--kill-at #VB must add                message("add vb option")        }        message("g++  mingw")}win32-msvc2015{      contains(QMAKESPEC,D:/Qt/Qt5.8.0_x86/5.8/msvc2015/mkspecs/win32-msvc2015):{                message("x86 msvc2015")                LIBS += -L$$PWD/'../../../Program Files (x86)/Microsoft Visual Studio 8/VC/PlatformSDK/Lib/' -lUser32                INCLUDEPATH += $$PWD/'../../../Program Files (x86)/Microsoft Visual Studio 8/VC/PlatformSDK/Lib'                DEPENDPATH += $$PWD/'../../../Program Files (x86)/Microsoft Visual Studio 8/VC/PlatformSDK/Lib'        }        else{                LIBS += -L'C:/Program Files (x86)/Windows Kits/8.1/Lib/winv6.3/um/x64/' -lUser32                INCLUDEPATH += 'C:/Program Files (x86)/Windows Kits/8.1/Lib/winv6.3/um/x64'                DEPENDPATH += 'C:/Program Files (x86)/Windows Kits/8.1/Lib/winv6.3/um/x64'                message("msvc2015  64")        }}
0 0
原创粉丝点击