• QT .pro文件中的变量说明


     

    https://blog.csdn.net/tanou3212/article/details/79942840

    TEMPLATE:定义了工程的编译模式

    赋值方式为:TEMPLATE=app

    (1) app :建立一个应用程序的makefile,这是默认值,即如果template没有被指定,这个将被使用

    (2) lib  :建立一个库的makefile

    (3) vcapp : 建立一个应用程序的Visual Studio项目文件

    (4) vclib  :建立一个库的Visual Studio项目文件

    (5) subdirs  :创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile

    TARGET:指定生成的应用程序名

    赋值方式为:TARGET = pksystem

    DESTDIR:指定生成的应用程序放置的目录

    赋值方式为:DESTDIR = destdir,其中,destdir为生成的应用程序放置的目录

    DEPENDPATH:程序编译时依赖的相关路径

    赋值方式为:DEPENDPATH += . forms include qrc sources

    INCLUDEPATH:指定工程要用到的头文件路径,一般包括用户自定义的头文件路径或没有放入系统头文件路径的头文件路径

    赋值方式为:INCLUDEPATH += . systeminclude,其中.表示当前目录,systeminclude为系统头文件路径

    SOURCES:工程需要的源文件

    如:SOURCES += main.cpp mainwindow.cpp

    HEADERS:工程所需要的头文件,一般包括用户自定义的头文件或未放入系统头文件路径的头文件

    如:HEADERS += mainwindow.h

    FORMS:工程要用到的ui文件(ui文件时用Qt designer生成的)

    如:FORMS += mainwindow.ui

    LIBS:加载库文件

    赋值方式为:LIBS+= -L/usr/local/lib -lm

    或者  LIBS += /usr/local/libm.so

    UI_DIR:UIC将ui转化为头文件所存放的目录

    RCC_DIR:RCC将qrc文件转化为头文件所存放的目录

    MOC_DIR:MOC命令将含Q_OBJECT的头文件转换为标准的头文件存放的目录

    OBJECTS_DIR:生成的目标文件存放的目录

    DEFINES:定义编译选项,在编写程序时可以使用#ifndef xx_xxx_ ...

    RC_FILE :程序中所用到的图片等资源文件

    RESOURCES:加载要用到的资源*.qrc文件

    如:RESOURCES += image.qrc

    CODECFORSRC:源文件编码方式

    如:CODECFORSRC = GBK

    TRASHLATIONS:加载要用到的语言翻译*.ts文件

    CONFIG:告诉qmake应用程序的配置信息

    (1)可以用来指定是生成debug模式还是release模式,也可以都生成


    CONFIG += debug_and_release

    CONFIG(debug,debug|release){

    TARGET= hello

    DESTDIR= ./debug

    }else{

    TARGET= hello

    DESTDIR= ./release

    }

    (2)可以用来打开编译器警告(warn_on输出尽可能多的警告信息)或者关闭(warn_off -编译器会输出尽可能少的警告信息)

    (3)可以用来配置要Qt加载库,例如如果要用到Qt的多线程,则:CONFIG+=qt thread

    (4)要运行console:CONFIG +=console

     平台信息:win32和unix

    QT是跨平台的,所以我们在不同的平台上用同一个pro文件,这要加入有关平台的信息。windows平台是win32,Linux平台是unix。

    例如在Windows和Linux的动态库文件格式是不一样的,一个是lib文件一个是so文件:

    win32:LIBS+= ./mitab/mitab_i.lib   

    unix:LiBS+= ./mitab/libmitab.so

    再如:

    win32{SOURCES+= hello_win.cpp //win平台}   

    unix{SOURCES+= hello_linux.cpp //unix/linux平台}

    变量解析符号$$

    可以通过在其它任何一个变量的变量名前加$$来把这个变量的值分配给当前的变量

    如:MY_DEFINES= $$DEFINE ,将DEFINE的值分配给MY_DEFINES
     

    ==================

    https://blog.csdn.net/qq_32320399/article/details/80310872

    注释
    以”#”开始的行,直到结束

    模板变量
    告诉qmake生成哪种makefile

    TEMPLATE = app

    其中

    app - 表示该工程建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用
    lib - 表示该工程建立一个库的makefile
    subdir - 生成针对子目录的Makefile,子目录由变量SUBDIRS指定;
    vcapp - 生成用于VS开发环境的软件工程(只用于windows系统);
    vclib - 生成用于VS开发环境的库工程(只用于windows系统);
    生成目录
    指定生成的可执行程序的目录,可以绝对和相对路径

    DESTDIR += ../bin

    生成的应用程序名
    软件名

    TARGET = qtest

    编译选项
    增添或者移除某个模块、指定编译器所要使用的选项,其可用选项如下:

    下面这些选项控制着使用哪些编译器标志: 
    release - 应用程序将以release模式连编。如果“debug”被指定,它将被忽略。
    debug - 应用程序将以debug模式连编。
    warn_on - 编译器会输出尽可能多的警告信息。如果“warn_off”被指定,它将被忽略。
    warn_off - 编译器会输出尽可能少的警告信息。
    下面这些选项定义了所要连编的库/应用程序的类型: 
    qt - 应用程序是一个Qt应用程序,并且Qt库将会被连接。
    thread - 应用程序是一个多线程应用程序。
    x11 - 应用程序是一个X11应用程序或库。
    windows - 只用于“app”模板:应用程序是一个Windows下的窗口应用程序。
    console - 只用于“app”模板:应用程序是一个Windows下的控制台应用程序。
    dll - 只用于“lib”模板:库是一个共享库(dll)。
    staticlib - 只用于“lib”模板:库是一个静态库。
    plugin - 只用于“lib”模板:库是一个插件,这将会使dll选项生效。
    增添C++11和console支持,Qt的各模块

    CONFIG += console c++11 network
    CONFIG -= qt

    可以用空格分隔或者””来隔行。

    目标文件目录
    obj文件存放的目录,可以绝对或相对路径

    OBJECTS_DIR += ../tmp

    工程中包含的头文件 
    表示本工程中的头文件

    HEADERS +=
        libcurl/curl/curl.h
        libcurl/curl/curlbuild.h
        libcurl/curl/curlrules.h

    只要qtcreator目录树里add进去了就自动添加

    工程中包含的源文件
    表示本工程中的源文件

    SOURCES += mytest.cpp
               main.cpp

    只要qtcreator目录树里add进去了就自动添加

    工程中包含的.ui设计文件
    FORMS += forms/painter.ui

    工程中包含的资源文件
    表示本工程包含的资源文件

    RESOURCES += qrc/painter.qrc

    只要qtcreator目录树里add进去了就自动添加,更改pro文件会同步更新qtcreator里的目录树,但不会影响硬盘上的资源文件

    附加头文件包含目录
    一般要编译链接第三方库时配置include目录 
    例如

    INCLUDEPATH += ./boost/include
                   src/thirdpart/include

    INCLUDEPATH += D:/boost/include
                   E:/cocos2dx/include

    可以用绝对或相对路径
    相对路径中./可以省略
    路径中不允许出现空格
    链接库
    对于静态库(.lib, .a)以及动态库.so

    LIBS += -LD:/codetest/libcurlcpp/libcurl/lib/ -llibcurl
            -LD:/codetest/libcurlcpp/libcurl/lib/ -lws2_32
            -LD:/codetest/libcurlcpp/libcurl/lib/ -lwldap32
            -LD:/codetest/libcurlcpp/libcurl/lib/ -lopencv
            -LD:/codetest/libcurlcpp/libcurl/lib/ -lzmq

    LIBS += D:/codetest/libcurlcpp/libcurl/lib/libcurl.lib
            D:/codetest/libcurlcpp/libcurl/lib/ws2_32.lib
            D:/codetest/libcurlcpp/libcurl/lib/wldap32.lib
            D:/codetest/libcurlcpp/libcurl/lib/opencv.a

    再或者


    LIBS +=

    PWD/libcurl/lib/libcurl.lib PWD/libcurl/lib/libcurl.lib 
    PWD/libcurl/lib/ws2_32.lib
           
    PWD/libcurl/lib/wldap32.libLl.lib.a,.sopath.lib.a,.soPWD/libcurl/lib/wldap32.lib可以用−L指定目录,−l指定库的名称(无需后缀,.lib,.a,.so都适用)可以直接通过绝对路径和相对路径指定库的完整path(需后缀,.lib,.a,.so都适用),相对路径用
    pwd前缀,路径不允许空格
    LIBS += somepath 这个可以多行写,也可以用“”隔行
    最后一种只适用于windows静态库
    对于linux链接库, 比如opencv项目用make编译出的libopencv.a或者libopencv.so,链接的时候必须写 -lopencv ,写项目的名字而不是库的文件名字
    对于动态库dll,必须拷贝到exe执行目录或者在环境变量里配置路径
    预编译宏
    DEFINES += USE_OPENSSL
               CURL_STATICLIB

    类似于vs里面在工程里设置预编译选项

    平台相关性处理
    根据qmake所运行的平台来使用相应的作用域来进行处理

    win32
    {
        SOURCES += 1.cpp
    }
    else
    {
        SOURCES += 2.cpp
    }

    根据平台进行条件编译

    只适用于Windows编译的一些变量
    DEF_FILE - 应用程序所要连接的.def文件。 
    RC_FILE - 应用程序的资源文件。 
    RES_FILE - 应用程序所要连接的资源文件。

    源文件编码方式
    CODECFORSRC = GBK

    随手记
    qt pro 里面变量的引用
    VAR = foobar =>当运行qmake时,赋值给变量

    VAR=>qmakeQMakeVAR=>在运行qmake时,QMake变量的值
    {VAR} =>在运行qmake的时候QMake变量的值(相同但是被封闭以与周围文本分开)
    $(VAR) =>运行Makefile(而不是qmake)时的环境变量的内容
    $$(VAR) =>运行qmake(不是Makefile)时的环境变量的内容
  • 相关阅读:
    植物大战僵尸智慧树和金币的简单破解(二)
    植物大战僵尸任意阳光的简单破解(一)
    Bash漏洞分析
    树莓派4 安装vim8.2 编译python3支持
    JAVA实现剑指offer 大神博主网址
    IO流+集合完成功能
    Java学习IO流处理
    Java中拷贝图片IO流
    Java学习list集合练习二
    java学习list集合训练
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/10598109.html
Copyright © 2020-2023  润新知