深入理解Qt的.pro文件

  • 深入理解Qt的pro文件
    • 模板变量
    • 生成目录
    • 生成的应用程序名
    • 编译选项
    • 目标文件目录
    • 包含头文件
    • 包含源文件
    • 包含资源文件
    • 附加头文件包含
    • 链接库
    • 预编译宏
    • 平台相关性处理
    • 指定来自ui文件位置
    • 指定界面翻译文本列表
    • 指定图标

深入理解Qt的.pro文件

一般Qt项目我们是使用Qt Creator自动生成的,如果是没有.pro的项目,可以使用qmake project来生成。

在一般的.pro里已经包含了几个基本的选项,如TEMPLATE,TARGET,INCLUDEPATH,HEADS,SOURCES等选项,下面我们细讲。

模板变量

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

生成目录

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

DESTDIR += ../bin

生成的应用程序名

程序名即软件名称

TARGET = 3DAOI

编译选项

增添后者移除某个模块。

例如增添c++11和console模块的支持,Qt的各模块也在这里添加

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

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

如果是一些比较特殊的Qt模块需要使用用以下方式加载:

QT += qml quick
QT += quick quickcontrols2

目标文件目录

obj文件存放的目录,也就是.o文件的生成路径,可以绝对路径或者相对路径。

OBJECTS_DIR += ../tmp

补充
- MOC_DIR 指定moc文件生成路径
- UI_DIR 指定ui文件生成路径

包含头文件

表示本项目中头文件。

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

只要Qt Creator目录树中add进去了就会自动追加到.pro文件中。

包含源文件

表示本项目中的源文件

SOURCES += main.cpp\
json.cpp

只要Qt Creator目录树里add进去了就会自动追加到.pro文件中。

包含资源文件

表示本项目包含的资源文件。

RESOURCES += qrc/painter.qrc

qrc文件格式类似如下:

<RCC><qresource prefix="/"><file>Chapter1/0_hello.qml</file><file>Chapter1/1_object_expression.qml</file></qresource>
</RCC>

只要Qt Creator目录树里add进去了就会自定追加,更改.pro文件会同步更新Qt Creator里的目录树,但不会影响硬盘上的自愿文件。

附加头文件包含

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

INCLUDEPATH += ./boost/include\
src/thirdpart/includeINCLUDEPATH += D:/boost/include\
E:/cocos2dx/include

注意

  • 可以用绝对路径或相对路径
  • 相对路径中./可以省略
  • 路径中不允许出现空格

链接库

对于静态库(.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

或者:

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

再或者:

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

注意:
对于动态库dll文件,必须拷贝到exe执行目录或者在环境变量里配置路径才可以。

预编译宏

DEFINES += USE_OPENSSL\
CURL_STATICLIB

类似于vs里面在工程里设置预编译选项 ,这个使用时自行google。

平台相关性处理

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

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

根据平台进行条件编译。

指定来自ui文件位置

这个我们不需要。

unix:UI_DIR = ../project/ui
win32:UI_DIR = D:/project/ui

指定界面翻译文本列表

翻译用户界面时需要用到。

TRANSLATIONS += Resource/myapp_zh.ts \Resource/myapp_en.ts

指定图标

如果RC_FILE 和RES_FILE变量都没有设置这才可利用

RC_ICONS = logo.ico

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536155.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 用vsftpd 配置FTP服务器

最近开学&#xff0c;有好多课程结束后都需要将文件考到优盘里&#xff0c;而本人又有健忘的毛病&#xff0c;经常忘记带优盘&#xff0c;所以就搭建了自己的ftp服务器&#xff0c;也算是用技术放松自己吧。闲话少叙&#xff0c;进入正题&#xff1a; 网上关于ftp搭建的文章很…

linux的程序打包deb

deb安装包 deb是Unix系统(其实主要是Linux)下的安装包&#xff0c;基于 tar 包&#xff0c;因此本身会记录文件的权限(读/写/可执行)以及所有者/用户组。 由于 Unix 类系统对权限、所有者、组的严格要求&#xff0c;而 deb 格式安装包又经常会涉及到系统比较底层的操作&#…

利用pyinstaller打包python3程序

pyInstaller是一款用于将pyhon程序打包成exe文件的工具&#xff0c;pyInstaller不是一个python的包&#xff0c; 只需要把pyInstaller的文件下载下来放到任意为止都可以&#xff0c;也就是说pyInstaller相当于独立出来专门干打包python的工具&#xff0c;这货是工具不是库&…

C++11新特性之左值右值及移动语句与完美转发

C左值右值左值和右值的由来什么是左值和右值左值右值的本质引用左值引用右值引用 移动语句与完美转发移动语句实现移动构造函数和转移赋值函数stdmove完美转发Perfect Forwarding C左值右值 自从C11发布之后&#xff0c;出现了一个新的概念&#xff0c;即左值和右值&#xf…

nginx中的nginx.conf.default配置

#运行用户 user nobody; #启动进程,通常设置成和cpu的数量相等 worker_processes 1;#全局错误日志及PID文件 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pid;#工作模式及连接数上限 events {…

C++11新特性之泛型编程与模板

模板泛型编程函数模板普通函数模板成员函数模板函数模板重载模板函数的特化 类模板类模板中的成员函数模板类模板的特化与偏特化类模板成员特化 模板 Template所代表的泛型编程是C语言中的重要组成部分。 泛型编程 泛型编程&#xff08;Generic Programming&#xff09;是…

WordPress更改“固定链接”后 页面404原因及解决方法(Nginx版)

网上盛传的方法是&#xff1a; 在 /etc/nginx/nginx.conf文件的 loction / {} 中添加 if (-f $request_filename/index.html){rewrite (.*) $1/index.html break; }if (-f $request_filename/index.php){rewrite (.*) $1/index.php; }if (!-f $request_filename){rewrite (.*…

C++类型萃取之type_traits和type_info

类型萃取类型判断typeiddecltype和declvalenable_if 类型萃取 通过type_traits可以实现在编译期计算、查询、判断、转换和选择&#xff0c;增强了泛型编程的能力&#xff0c;也增强了我们程序的弹性&#xff0c;让我们能够在编译期就能够优化改进甚至排错&#xff0c;进一步提…

使用Phpstorm实现远程开发

Phpstorm除了能直接打开本地文件之外&#xff0c;还可以连接FTP&#xff0c;除了完成正常的数据传递任务之外&#xff0c;还可以进行本地文件与服务端文件的异同比较&#xff0c;同一文件自动匹配目录上传&#xff0c;下载&#xff0c;这些功能是平常IDE&#xff0c;FTP软件中少…

什么是递归函数?

文章目录递归函数递归例题特点效率优点递归函数 递归 递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身&#xff0c;每调用一次就进入新的一层。递归函数必须有结束条件。 当函数在一直递推&#xff0c;直到遇到墙后返回&#xff0c;这个墙就是结束条…

apache ab压力测试报错

今天用apache 自带的ab工具测试&#xff0c;当并发量达到1000多的时候报错如下&#xff1a; [rootaa~]# This is ApacheBench, Version 2.3 <Revision:655654> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Sof…

ngOnInit与constructor的区别

前世今生 Angular会管理一个组件的生命周期,包括组件的创建、渲染、子组件创建与渲染、当数据绑定属性变化时的校验、DOM移除之前毁销。 Angular提供组件生命周期钩子便于我们在某些关键点发生时添加操作。 组件生命周期钩子 指令和组件实例有个生命周期用于创建、更新和销…

Nginx配置性能优化

大多数的Nginx安装指南告诉你如下基础知识——通过apt-get安装&#xff0c;修改这里或那里的几行配置&#xff0c;好了&#xff0c;你已经有了一个Web服务器了。而且&#xff0c;在大多数情况下&#xff0c;一个常规安装的nginx对你的网站来说已经能很好地工作了。然而&#xf…

Angular的@Output与@Input理解

@Output与@Input理解 Output和Input是两个装饰器,是Angular2专门用来实现跨组件通讯,双向绑定等操作所用的。 @Input Component本身是一种支持 nest 的结构,Child和Parent之间,如果Parent需要把数据传输给child并在child自己的页面中显示,则需要在Child的对应 directiv…

腾讯云CDN配置

第一步&#xff1a;先去领取腾讯云CDN免费包23333333 以下为正式步骤&#xff1a; 在这里体现大家&#xff0c;域名一定要备案&#xff0c;另外要明白域名如何解析 前边问题不大&#xff0c;一切跟着腾讯云的套路来即可&#xff0c;需要注意的是网上后优化的配置大家可以自行…

Promise.all的深入理解

异步之Promise Promise.all Promise.all接收的promise数组是按顺序执行的还是一起执行的&#xff0c;也就是说返回的结果是顺序固定的吗&#xff1f; 目前有两种答案&#xff1a; 应该是同步执行的&#xff0c;但是这样就有效率问题了&#xff0c;如果想改成异步执行怎么办…

wordpress后台无法登录问题

之前给自己的WordPress加了个标签云&#xff0c;今天登录的时候突然发现网站后台进不去了&#xff0c;无奈各种找材料&#xff0c;这算是皇天不负有心人&#xff0c;总算是给我找到了&#xff0c;现在做一下记录 登录不上的原因在于&#xff1a;wp-admin和wp-admin/是不同的&a…

深入理解Angular订阅者模式

深入理解Angular订阅者模式 如果正在读此篇文章的你学过java,c++等面向对象语言,知道两个模式观察者模式和订阅者模式,分别为:Observer pattern,Pub-sub pattern(Subscriber) 接下来我们结合Angular来说明这两个模式。 Observer pattern This is a pattern of developme…

Ubuntu中安装python3

通过命令行安装Python3.*&#xff0c;只需要在终端中通过命令行安装即可&#xff1a; sudo apt-get install python3 Ubuntu的底层大多数采用的是Python2.*&#xff0c;Python3和Python2是互相不兼容的&#xff0c;完全没法通用的&#xff08;也不知道他们怎么想的o(TヘTo)&a…

Angular深入理解之指令

Angular深入理解之指令 指令有什么功能 Attribute directives 属性指令Structural directives 结构指令自定义属性指令自定义结构指令Angular深入理解之指令 对于初学Angular的同学来说,指令无疑是最痛苦的,那么我们怎么使用自定义的指令呢?指令到底怎么实现呢?为什么要写…