[关闭]
@breakerthb 2017-05-09T12:13:25.000000Z 字数 1831 阅读 3851

Qt Creator .pro文件

Linux


ref: http://blog.csdn.net/jinzeyu_cn/article/details/45790457
ref : http://www.cnblogs.com/Braveliu/p/5107550.html

1. 不同类型的程序

1.1 应用程序

TEMPLATE = app
TARGET = abc.exe

1.2 动态库

TEMPLATE = lib
TARGET = boost

生成的目标文件为:libboost.so

1.3 静态库

TEMPLATE = lib
CONFIG += staticlib
TARGET = boost

生成的目标文件为:libboost.a

1.4 父工程(相当于解决方案)

TEMPLATE = subdirs
SUBDIRS = \
    abc\
    bcd\

2. 常用关键字

CONFIG

CONFIG += warn_on debug # 打印编译警告
CONFIG += release

OBJECTS_DIR

指定目标文件(obj)的存放目录

OBJECTS_DIR += ../tmp

DEPENDPATH

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

DEPENDPATH += . forms include qrc sources

INCLUDEPATH

头文件包含路径

INCLUDEPATH += .

DEFINES

定义编译选项,相当于.h中的#define

DEFINES += XX_XX_XXX

如:

DEFINES += ABC

之后在编译时会出现

g++ abc.c -DABC

LIBS

引用库文件

LIBS += -L XX/XX -lx -lxx

包含路径和库文件名都写在这里。

注意:

-l 有先后顺序。原则是左边依赖右边。

如:

liblogger.so -> libboost_log.so : -L. -llogger -lboost_log

支持C++11

QMAKE_CXXFLAGS += -std=c++11

指定生成目录

DESTDIR = ../libs

或者

DESTDIR = $$_PRO_FILE_PWD_/../lib

前者指定的是编译目录中的相对路径,后者指定的是代码目录中pro文件的上层目录。

$$_PRO_FILE_PWD_变量表示当前pro文件所在的目录。

3. 变量

3.1 常用系统变量

  1. $$_PRO_FILE_PWD_ 当前pro文件所在路径
  2. $$(PATH) : qmake的环境变量

3.2 打印信息

在pro文件中,如果需要打印某个变量的值,可以使用message命令,如:

message($(PATH))
message($$_PRO_FILE_PWD_)
message("abcd")

在Qt Creator工程右键->"Run qmake"可以在"Compile Output"中看到这些信息

3.3 自定义变量

在pro文件里,可以使$$varname或者$${varname}来访问自己定义的变量,如

myversion = 1.2
file = 1.cpp
target = improve$${myversion}
    sources = $$file

pro文件里,访问环境变量的用法是:访$[varname]

4. 生成makefile文件

Makefile可以像这样由“.pro”文件生成:

qmake -oMakefile hello.pro

对于VisualStudio的用户,qmake也可以生成“.dsp”文件,例如:

qmake -tvcapp -o hello.dsp hello.pro

5. Demo

静态库

QT -= core gui # 不使用QT库参与编译
TARGET = abc.exe
TEMPLATE = lib  #固定写法
CONFIG += staticlib   #静态库固定写法
#DEFINES +=
DESTDIR = $$_PRO_FILE_PWD_/../lib
SOURCES += \
    ostatic.cpp \
    odebugoutput.cpp

HEADERS += omisc.h \
    ostatic.h \
    ostringmap.hpp \
    odebugoutput.h
unix:!symbian { 
    maemo5 {
        target.path = /opt/usr/lib
    } else {
        target.path = /usr/lib
    }
    INSTALLS += target
}

动态库

QT -= core gui

TEMPLATE = lib
TARGET = interface

DESTDIR = ../libs

QMAKE_CXXFLAGS += -std=c++11
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注