QT配置文件详解

TEMPLATE=lib

TEMPLATE变量用于指定项目模板类型,其值可以是以下几种:

  • app:建立一个应用程序的makefile,这是默认值。
  • lib:建立一个库的makefile。
  • vcapp:建立一个应用程序的Visual Studio项目文件。
  • vclib:建立一个库的Visual Studio项目文件。
  • subdirs:创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile‌12。

TEMPLATE=lib时,编译后的输出将是一个静态库或动态库,而不是一个可执行文件‌



 DEFINES+= EARTHWIDGETPLUGIN_LIBRARY

意思是定义了一个宏EARTHWIDGETPLUGIN_LIBRARY,这个宏可以在代码中用来控制条件编译或者其他一些需要根据是否定义了某个宏来改变代码行为的情况。当在Qt Creator中构建项目时,qmake会处理这个宏定义,并将其传递给编译器和链接器。



 CONFIG += c++11

CONFIG += c++11用于指定使用C++11标准。这样做可以确保你的代码在编译时使用C++11的特性。

C++11标准于2011年8月12日公布,并于2011年9月出版‌。‌1

C++11是C++程序设计语言的一个重要更新,它包含了大量现代编程语言的特性,使得C++11看起来像一门新的语言。C++之父Bjarne Stroustrup曾表示:“C++11看起来像一门新的语言”。此外,C++11标准代替了原来的C++98和C++03。各大主流编译器如VS2012、g++、clang等都在很大程度上支持C++11标准。



INCLUDEPATH 

INCLUDEPATH 是 Qt 的 qmake 构建系统中使用的一个变量,它用于指定包含的头文件的搜索路径。

INCLUDEPATH += \ 是向 INCLUDEPATH 添加新的路径的语法。

INCLUDEPATH 可以在 .pro 文件中设置,用于指定额外的包含路径。

如果你有多个路径需要添加,你可以这样做:

INCLUDEPATH += /home/user/includes \
                /home/user/includes/anotherfolder

你也可以使用相对路径:

INCLUDEPATH += $$PWD/includes

在这里,$$PWD 是一个 qmake 的变量,它代表了 .pro 文件所在的目录。

如果你需要添加系统的路径,你可以使用 :

INCLUDEPATH += :/home/user/includes

注意,在路径前面的 : 是告诉 qmake 这是一个系统路径

最后,如果你需要添加第三方库的头文件路径,你可以这样做:

INCLUDEPATH += $$(SOME_ENVIRONMENT_VARIABLE)/include

在这里,SOME_ENVIRONMENT_VARIABLE 是一个环境变量,它指向了第三方库的安装目录。

总的来说,INCLUDEPATH 是一个很重要的 qmake 变量,它让你能够很容易地在你的项目中包含其他目录下的头文件。

INCLUDEPATH += .   包含当前目录,也就是.pro文件所在的目录

INCLUDEPATH += ./subdir 表示引用当前目录下的subdir子目录

Qt 会自动将项目文件所在目录添加到包含路径中,所以通常不需要显式添加当前目录。


LIBS+= -L

在Qt的.pro文件中,LIBS+= -L是用来添加库路径的。其中-L是指定库路径的参数,后面跟着库所在的目录。这样会在/usr/lib目录下查找libmylib.so动态库或者libmylib.a静态库,并添加到链接器中

LIBS += -L/home/user/libs      LIBS后面添加库路径

LIBS += -L/home/user/libs/libmylib.so  只想添加特定的库文件,可以在-L后面添加库文件的全路径

 LIBS += -L/usr/lib -lmylib       会在/usr/lib目录下查找libmylib.so动态库或者libmylib.a静态库,并添加到链接器中



 Translations+=\

在Qt的项目(.pro)文件中,TRANSLATIONS+= 是一个用于指定翻译文件(.ts文件)的指令,这些文件用于实现Qt应用程序的国际化和本地化。

TRANSLATIONS += \
    path/to/your/translations/myapp_de.ts
使用 \ 是为了跨越多行,如果你只有一个文件,也可以直接写在一行上。


qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /o

QNX是一款实时操作系统(RTOS),广泛应用于嵌入式系统开发。它具有可靠性、稳定性和高性能的特点,因此被广泛应用于汽车、医疗设备、工业控制等领域。在嵌入式开发中,我们常常需要为QNX平台编译和构建代码。

qnx: target.path = /tmp/$${TARGET}/bin

这部分代码表示如果目标平台是QNX,则将目标路径设置为/tmp/$${TARGET}/bin。其中,$${TARGET}是一个变量,表示目标平台的名称。

举个例子,如果我们的目标平台是QNX,并且$${TARGET}的值为qnx6,那么最终的目标路径将是/tmp/qnx6/bin。在这个路径下,生成的可执行文件或库文件将被存放。

else: unix:!android: target.path = /o

这部分代码表示如果目标平台不是QNX,并且是Unix系统但不是Android系统,则将目标路径设置为/o。

举个例子,如果我们的目标平台是Linux或macOS,并且不是Android系统,那么最终的目标路径将是/o。在这个路径下,生成的可执行文件或库文件将被存放。

设置目标路径还有另外一种办法:

CONFIG(debug, debug|release) { DESTDIR = PWD/../output/debug } else { DESTDIR = PWD/../output/release }



INSTALLS+=target

INSTALLS是Qt的qmake系统中的一个变量,用于指定项目生成的目标文件、库文件、插件、qm文件(翻译文件)等应该被安装到哪些位置。

INSTALLS += [目标类型] [文件位置]

其中,目标类型可以是以下几种:

  • target:表示将文件安装到可执行文件所在的目录。

  • lib_target:表示将文件安装到库文件所在的目录。

  • bin_target:表示将文件安装到可执行文件所在的目录。

  • libexec_target:表示将文件安装到共享库执行文件所在的目录。

  • plugins:表示将插件安装到插件目录。

  • translations:表示将翻译文件安装到翻译目录。

  • declarative_source:表示将QML文件安装到QML源目录。

文件位置是相对路径,相对于安装目录的路径。

例如,如果你有一个Qt应用程序,你想将可执行文件安装到/usr/bin,那么你可以在.pro文件中添加以下代码:

INSTALLS += target    /usr/bin   将可执行文件安装到/usr/bin

INSTALLS += lib_target    /usr/lib    将库文件安装到/usr/lib

INSTALLS += plugins   /usr/lib/qt5/plugins    将插件安装到/usr/lib/qt5/plugins

INSTALLS += translations    /usr/share/qt5/translations  将翻译文件安装到某目录



win32:CONFIG

在 .pro 文件中加入以下定义即可。(它会自动在构建目录下生成一个tmp目录,分为release目录和debug目录,用于存放产生的中间文件)


win32:CONFIG(release, debug|release):{
    DESTDIR =$$PWD/release
    UI_DIR = $$PWD/tmp/release/ui
    MOC_DIR = $$PWD/tmp/release/moc
    OBJECTS_DIR = $$PWD/tmp/release/obj
    RCC_DIR = $$PWD/tmp/release/rcc
}
else:win32:CONFIG(debug, debug|release):{
    DESTDIR =$$PWD/debug
    UI_DIR = $$PWD/tmp/debug/ui
    MOC_DIR = $$PWD/tmp/debug/moc
    OBJECTS_DIR = $$PWD/tmp/debug/obj
    RCC_DIR = $$PWD/tmp/debug/rcc
}


build_type =
CONFIG(debug, debug|release) {
    build_type = debug
} else {
    build_type = release
}
 
DESTDIR     = $$build_type/out
OBJECTS_DIR = $$build_type/obj
MOC_DIR     = $$build_type/moc
RCC_DIR     = $$build_type/rcc
UI_DIR      = $$build_type/ui

FR:徐海涛(hunkxu)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat10部署Servlet加载错误问题解决

Servlet加载错误:HelloServlet不是Servlet 环境信息:IDEA中的maven项目,tomcat10.1.33 问题信息:XXX.Servlet不是Servlet 问题原因:tomcat10将JavaEE也换成了Jakarta EE; Jakarta EE较以前的JavaEE有一个重…

2024年第十三届”认证杯“数学中国数学建模国际赛(小美赛)

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

百度智能云发布首个空间智能解决方案,百度AI优势如何分析?

首先,百度智能云此次推出的空间智能解决方案,在技术底座上展现了其强大的AI异构计算能力。百度百舸AI异构计算平台作为该方案的底层支撑,为2D和3D应用中的人物、物件及场景生成提供了强大的算力支持。这一平台的推出,不仅提升了空…

RTSP摄像头、播放器为什么需要支持H.265?

H.264还是H.265? 好多开发者在做选RTSP播放器的时候,经常问我们的问题是,用H.264好还是H.265好?本文我们就H.264 和 H.265的主要区别和适用场景,做个大概的交流。 一、压缩效率 H.265 更高的压缩比 H.265 在相同视频…

BGP协议路由黑洞

一、实验环境 1、分公司与运营商AS自治系统内运行IGP路由协议OSPF、RIP或静态路由,AS自治系统内通过IBGP路由协议建立BGP邻居关系。 2、公司AS自治系统与运营商AS自治系统间运行EBGP路由协议。 3、通过loopback建立IBGP与EBGP邻居关系,发挥loopback建立…

解决数据传送问题:内网http传输

在服务器上启http服务 在服务器上输入命令: python3 -m http.server 1234 回车启动 访问和下载方法: 然后可以在本地的浏览器上访问:服务器IP:1234 例如192.11.1.1:1234,然后就可以下载对应文件夹下的东西了 在本地上启htt…

飞塔防火墙只允许国内IP访问

飞塔防火墙只允许国内IP访问 方法1 新增地址对象,注意里面已经细分为中国内地、中国香港、中国澳门和中国台湾 方法2 手动新增国内IP的对象组,目前好像一共有8632个,每个对象最多支持600个IP段

《Learn Three.js》学习(3)光源

前言: WebGL本身不支持光源,不使用three.js,则需使用着色程序来模拟光源。 学习大纲: Three.js中的光源 特定光源的使用时机 如何调整和配置所有光源的行为 如何创建镜头光晕 光源表 基础光源:THRER.AmbientLight、THERE.Point…

Linux——基础命令(2) 文件内容操作

目录 ​编辑 文件内容操作 1.Vim (1)移动光标 (2)复制 (3)剪切 (4)删除 (5)粘贴 (6)替换,撤销,查找 (7&#xff…

鸿蒙开发App 如何通过抓包查看 http 网络请求?

通过借助第三方工具 Charles https://www.charlesproxy.com/ https://www.zzzmode.com/mytools/charles/https://www.zzzmode.com/mytools/charles/ Charles 激活码计算器 相关博客日志:https://zhuanlan.zhihu.com/p/281126584 MAC上的使用方法: ch…

【Git】Git 完全指南:从入门到精通

Git 完全指南:从入门到精通 Git 是现代软件开发中最重要的版本控制工具之一,它帮助开发者高效地管理项目,支持分布式协作和版本控制。无论是个人项目还是团队开发,Git 都能提供强大的功能来跟踪、管理代码变更,并保障…

分布式锁的实现原理

作者:来自 vivo 互联网服务器团队- Xu Yaoming 介绍分布式锁的实现原理。 一、分布式锁概述 分布式锁,顾名思义,就是在分布式环境下使用的锁。众所周知,在并发编程中,我们经常需要借助并发控制工具,如 mu…

全新AI模型家族登场:完全可复现的开源语言模型OLMo 2

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

探索Python WebSocket新境界:picows库揭秘

文章目录 探索Python WebSocket新境界:picows库揭秘第一部分:背景介绍第二部分:picows库概述第三部分:安装picows库第四部分:简单库函数使用方法第五部分:场景应用第六部分:常见Bug及解决方案第…

Jenkins Nginx Vue项目自动化部署

目录 一、环境准备 1.1 Jenkins搭建 1.2 NVM和Nodejs安装 1.3 Nginx安装 二、Jenkins配置 2.1 相关插件安装 2.2 全局工具安装 2.3 环境变量配置 2.4 邮箱配置(构建后发送邮件) 2.5 任务配置 三、Nginx配置 3.1 配置路由转发 四、部署项目 …

《Python语言程序设计》(2018年版)第15遍刷第1章第1题和第2题

2024.11.28 重新开始刷题 第一章 1.1 print( Welcome to Python Welcome to Computer Science Programming is fun )1.2 text_message "Welcome to Python\n"print(text_message * 5)

认识redis 及 Ubuntu安装redis

文章目录 一. redis概念二. redis应用场景二. redis的特性四. 使用Ubuntu安装redis 一. redis概念 redis 是在内存中存储数据的中间件, 用在分布式系统 redis是客户端服务器结构的程序, 客户端服务器之间通过网络来通信 二. redis应用场景 redis可用作数据库 类似MySQL, 但…

2024年信号处理与神经网络应用(SPNNA 2024)

会议官网:www.spnna.org 会议时间:2024年12月13-15日 会议地点:中国武汉

canal同步数据教程

canal简介 官网:https://github.com/alibaba/canal 主要是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费,是一个实时同步的方案。 基于日志增量订阅和消费的业务包括 数据库镜像数据库实时备份索引构建和实时维护(拆分异构索引、…

【网络安全 | 漏洞挖掘】绕过SAML认证获得管理员面板访问权限

未经许可,不得转载。 文章目录 什么是SAML认证?SAML是如何工作的?SAML响应结构漏洞结果什么是SAML认证? SAML(安全断言标记语言)用于单点登录(SSO)。它是一种功能,允许用户在多个服务之间切换时无需多次登录。例如,如果你已经登录了facebook.com,就不需要再次输入凭…