Qt开发中,pro文件是对正工程所有源码、编译、资源、目录等的全方位配置的唯一方式,pro文件的编写非常重要,以下对几个重要项进行说明(win和linux,mac平台通用配置)

注释

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

模板变量

告诉qmake生成哪种makefile

TEMPLATE = app
  • 1

其中

  • app -表示该工程建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用
  • lib - 表示该工程建立一个库的makefile

生成目录

指定生成的可执行程序的目录,可以绝对和相对路径

DESTDIR += ../bin
  • 1

生成的应用程序名

软件名

TARGET = qtest
  • 1

编译选项

增添或者移除某个模块 
比如增添C++11和console支持,Qt的各模块也在这里面添加

CONFIG += console c++11 network
CONFIG -= qt
  • 1
  • 2

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

目标文件目录

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

OBJECTS_DIR += ../tmp
  • 1

工程中包含的头文件

表示本工程中的头文件

HEADERS += \
libcurl/curl/curl.h \
libcurl/curl/curlbuild.h \
libcurl/curl/curlrules.h \
  • 1
  • 2
  • 3
  • 4

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

工程中包含的源文件

表示本工程中的源文件

SOURCES += mytest.cpp\
main.cpp
  • 1
  • 2

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

工程中包含的资源文件

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

RESOURCES += qrc/painter.qrc
  • 1

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

附加头文件包含目录

一般要编译链接第三方库时配置include目录 
例如

INCLUDEPATH += ./boost/include\
src/thirdpart/include
  • 1
  • 2
INCLUDEPATH += D:/boost/include\
E:/cocos2dx/include
  • 1
  • 2
  • 可以用绝对或相对路径
  • 相对路径中./可以省略
  • 路径中不允许出现空格

链接库

对于静态库(.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.so\
-LD:/codetest/libcurlcpp/libcurl/lib/-llibzmq.a
  • 1
  • 2
  • 3
  • 4
  • 5

或者

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.so\
D:/codetest/libcurlcpp/libcurl/lib/opencv.a
  • 1
  • 2
  • 3
  • 4
  • 5

或者

LIBS += $$PWD/libcurl/lib/libcurl.lib\
$$PWD/libcurl/lib/ws2_32.lib\
$$PWD/libcurl/lib/wldap32.lib
  • 1
  • 2
  • 3
  • 4
  • 可以用-L指定目录,-l指定库的名称(无需后缀,.lib,.a, .so都适用)注意-l后面没有空格
  • 可以直接通过绝对路径和相对路径指定库的完整path(需后缀,.lib,.a, .so都适用),相对路径用$$pwd前缀,路径不允许空格
  • LIBS += somepath 这个可以多行写,也可以用“\”隔行

对于动态库dll,必须拷贝到exe执行目录或者在环境变量里配置路径

预编译宏

DEFINES += USE_OPENSSL\
CURL_STATICLIB
  • 1
  • 2

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

平台相关性处理

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

win32
{
SOURCES += 1.cpp
}
else
{
SOURCES += 2.cpp
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

根据平台进行条件编译

Qt工程pro文件的简单配置(尤其是第三方头文件和库)的更多相关文章

  1. Qt 工程 pro文件

    工作中,感觉pro文件的有些内容真不太懂,现系统性的学习一下.于此备录,分享共勉. 为了更好的理解,先创建一个简单的工程作为实践. [1]创建一个pro文件 1.1 新建proDemo工程.步骤如下: ...

  2. QT工程pro设置实践(with QtCreator)----非弄的像VS一样才顺手?

    源地址:http://my.oschina.net/jinzei/blog/100989?fromerr=DhQJzZQe 相信大家很多和我一样,用多了微软给的便利,用人家的就十分不习惯.于是就琢磨原 ...

  3. 通过微软的HTML Help Workshop 利用.html文件 生成简单的chm帮助类的文件

    1.下载并安装Microsoft HTML Help Workshop 下载链接:http://www.microsoft.com/en-us/download/details.aspx?id=211 ...

  4. QtCreator添加第三方头文件和类库

    在Qt Creator的项目中添加头文件和库 在Qt Creator中的工程中,工程通过.pro文件管理. 额外需要连接的连接库 unix:LIBS += -L your_lib_path -lyou ...

  5. 多文件协作,extern、static、头文件

    多个cpp文件协同工作.使用外部函数.变量时,必须先声明再使用.声明外部函数(一般在main.cpp中),extern可省略(主函数中默认可访问外部函数)extern void RectArea(); ...

  6. QT工程中添加资源(简单明了)

    1. 在工程文件下右击添加新文件 2. 在QT目录下选择QT Resource File 3. 填写资源名称 4. 点击完成就可以看到自己建立的资源了 5. 点击右键添加现有文件,找到自己要添加的资源 ...

  7. 【第十三篇】mvc下载文件,包括配置xml保护服务端文件不被外链直接访问

    这里先说下载文件 <a style="color:black; margin-right:3px;" onclick="dowAtt(' + index + ')& ...

  8. Windows平台VC++ 6.0 下的网络编程学习 - 简单的测试winsock.h头文件

    最近学习数据结构和算法学得有点累了(貌似也没那么累...)...找了本网络编程翻了翻当做打一个小基础吧,打算一边继续学习数据结构一边也看看网络编程相关的... 简单的第一次尝试,就大致梳理一下看书+自 ...

  9. java servlet中上传文件的简单实现(基于第三方jar)

    这里的案例使用了两种文件上传的组件.分别介绍 1.使用JSPSmartUpload完成上传 package test_servlet_package; import java.io.File; imp ...

随机推荐

  1. PS 如何使用抽出滤镜抠人物的头发丝等细节

    1.打开图片,复制背景,关闭背景眼睛.单击 滤镜 -抽出, 我们要学会观察图片,先来看下面这张图: 这张图片色彩虽然不算丰富,但也不是纯色背景,甚至有些许的零乱,但人物的主题却被黑色长发包围, 我们只 ...

  2. java 最长回文字串

      package string.string1_6; public class LongestPalidrome { /** * 使用常规方法, 以字符串的每一个字符作为中心进行判断, 包括奇数和偶 ...

  3. IOS 汤姆猫核心代码

    // // MJViewController.m // 03-Tom // // Created by apple on 13-11-24. // Copyright (c) 2013年 itcast ...

  4. if UDP is permitted

    Networking Basics (The Java™ Tutorials > Custom Networking > Overview of Networking) https://d ...

  5. Refusing to install package with name “XXXX”

    我的执行步骤 我创建了一个名叫express的文件夹,想在这个工程中学习express 进入该文件夹,执行npm init来初始化package.json文件,一直回车. 我们会发现当前文件夹多了一个 ...

  6. (非原)SQL注入专题--整理帖 && like 语句拼sql 如何防止注入攻击。

    原地址:blog.csdn.net/lvjin110/article/details/28697695 like 语句拼sql 如何防止注入攻击?http://bbs.csdn.net/topics/ ...

  7. var与变量提升

    var是否可以省略 一般情况下,是可以省略var的,但有两点值得注意: 1.var a=1 与 a=1 ,这两条语句一般情况下作用是一样的.但是前者不能用delete删除.不过,绝大多数情况下,这种差 ...

  8. 剑指Offer:重建二叉树【7】

    剑指Offer:重建二叉树[7] 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5 ...

  9. ORACLE 表空间扩展

    最近公司在对即将上线的系统做数据迁移和压力测试,于是乎需要和 Oracle 经常的打交道.今天正好碰到了表空间的问题,记录下来以后备用.也是最近才学习到的,原来 Oracle 表空间也是有大小限制的, ...

  10. ssh服务器终端乱码

    在使用 iTerm2 ssh 连接远程服务器的终端时,终端中文显示乱码.但是本地使用却没有出现中文乱码的问题,在网络上寻找了一番发现应该是服务器字符集和本地 iTerm2 设置的字符集不一致导致的,于 ...