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/releaseUI_DIR = $$PWD/tmp/release/uiMOC_DIR = $$PWD/tmp/release/mocOBJECTS_DIR = $$PWD/tmp/release/objRCC_DIR = $$PWD/tmp/release/rcc
}
else:win32:CONFIG(debug, debug|release):{DESTDIR =$$PWD/debugUI_DIR = $$PWD/tmp/debug/uiMOC_DIR = $$PWD/tmp/debug/mocOBJECTS_DIR = $$PWD/tmp/debug/objRCC_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)

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

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

相关文章

深入浅出摸透AIGC文生图产品SD(Stable Diffusion)

hihi,朋友们,时隔半年(24年11月),终于能腾出时间唠一唠SD了🤣,真怕再不唠一唠,就轮不到SD了,技术更新换代是在是太快! 朋友们,最近(24年2月)是真的没时间整理笔记,每天都在疯狂的学习Stable Diffusion和WebUI & ComfyUI,工作实在有点忙,实践期间在飞书上…

Maven 如何配置忽略单元测试

在使用 Maven 进行项目构建时,有时您可能希望跳过测试阶段。 这在确保代码更改不影响测试结果或需要快速部署项目的情况下特别有用。 Maven 提供了多种方法来在构建过程中跳过测试。 为什么跳过测试? 加速构建:对于具有大量测试用例的大项…

面试(十一)

目录 一.IO多路复用 二.为什么有IO多路复用机制? 三.IO多路复用的三种实现方式 3.1 select select 函数接口 select 使用示例 select 缺点 3.2 poll poll函数接口 poll使用示例 poll缺点 3.3 epoll epoll函数接口 epoll使用示例 epoll缺点 四. 进程和线程的区别…

HCIP——堆叠技术实验配置

目录 一、堆叠的理论知识 二、堆叠技术实验配置 三、总结 一、堆叠的理论知识 1.1堆叠概述: 是指将两台交换机通过堆叠线缆连接在一起,从逻辑上变成一台交换设备,作为一个整体参与数据的转发。 1.2堆叠的基本概念 堆叠系统中所有的单台…

【GPT】力量训练的底层原理?

详细解读力量训练的每一个底层原理 力量训练之所以有效,是因为它利用了肌肉、神经系统和生物化学反应的基本机制。以下逐一详细解析,并解释相关概念。 1. 应力-恢复-适应理论 概念解析 应力(Stress):指训练带来的负…

快速上手:如何开发一个实用的 Edge 插件

在日常浏览网页时,背景图片能够显著提升网页的视觉体验。如果你也想为自己的浏览器页面添加个性化背景图片,并希望背景图片设置能够持久保存,本文将介绍如何通过开发一个自定义Edge插件来实现这一功能。我们将涵盖保存背景设置到插件选项页&a…

介绍一下atol(arr);(c基础)

hi , I am 36 适合对象c语言初学者 atol(arr)&#xff1b;是返回整数(long型)&#xff0c;整数是arr数组中字符中数字 格式 #include<stdio.h> atol(arr); 返回值arr数组中的数字 未改变arr数组 #include<stdio.h> //atol(arr); 返 <stdlib> int main…

每日十题八股-2024年11月27日

1.类型互转会出现什么问题吗&#xff1f; 2.为什么用bigDecimal 不用double &#xff1f; 3.装箱和拆箱是什么&#xff1f; 4.Java为什么要有Integer&#xff1f; 5.Integer相比int有什么优点&#xff1f; 6.那为什么还要保留int类型&#xff1f; 7.说一下 integer的缓存 8.怎么…

Python的排序算法

一、算法 1.1 算法概念 算法就是计算机解决问题的方法或者步骤 程序 数据结构 算法 1.2 算法的特性 1】确定性&#xff1a; 算法的每条语句具有明确的意思&#xff0c;不能模棱两可 2】有穷性&#xff1a;在执行一定的时间后&#xff0c;能自动结束算法 3】输入&#…

npm install -g@vue/cli报错解决:npm error code ENOENT npm error syscall open

这里写目录标题 报错信息1解决方案 报错信息2解决方案 报错信息1 使用npm install -gvue/cli时&#xff0c;发生报错&#xff0c;报错图片如下&#xff1a; 根据报错信息可以知道&#xff0c;缺少package.json文件。 解决方案 缺什么补什么&#xff0c;这里我们使用命令npm…

RuoYi排序

RuoYi框架提供了多种实现排序的方法&#xff0c;以满足不同场景下的需求。这里简要介绍几种常见的排序实现方式&#xff1a; 1. 后端排序 1.1 使用startPagePlus方法 RuoYi框架中&#xff0c;可以通过对BaseController进行扩展来实现更灵活的分页与排序功能。例如&#xff0…

在windows操作系统上,用git与github账户连接

一、环境准备 1.1 git软件 1.2 github账号 1.3 创建一个项目目录&#xff0c;比如 D:\project\gitproject 二、开始操作 1. 进入项目目录下&#xff0c;右键&#xff0c;如图&#xff0c;打开git bash命令行 2. 在命令行输入以下三个命令 $ git config --global user.name &quo…

视频监控实现画面缩放功能

文章目录 概要一、功能说明二、核心实现代码三、技术细节 概要 在视频监控系统中&#xff0c;经常需要查看视频画面中的细节。通过实现区域放大、滚轮缩放和拖拽平移等功能&#xff0c;可以让用户更方便地观察视频细节。本文介绍如何在 Windows 系统下实现这些交互功能。 一、…

鸿蒙本地模拟器 模拟TCP服务端的过程

鸿蒙模拟器模拟TCP服务端的过程涉及几个关键步骤&#xff0c;主要包括创建TCPSocketServer实例、绑定IP地址和端口、监听连接请求、接收和发送数据以及处理连接事件。以下是详细的模拟过程&#xff1a; **1.创建TCPSocketServer实例&#xff1a;**首先&#xff0c;需要导入鸿蒙…

云原生后端开发:构建现代化可扩展的服务

随着微服务架构的普及和容器化技术的成熟&#xff0c;云原生后端开发成为了构建现代化、可扩展系统的关键。本文将从云原生理念出发&#xff0c;结合实际案例&#xff0c;探讨如何使用 Kubernetes、服务网格、微服务架构等技术构建高效的云原生后端。 一、云原生的核心理念 1.…

RNN模型文本预处理--数据增强方法

数据增强方法 数据增强是自然语言处理&#xff08;NLP&#xff09;中常用的一种技术&#xff0c;通过生成新的训练样本来扩充数据集&#xff0c;从而提高模型的泛化能力和性能。回译数据增强法是一种常见的数据增强方法&#xff0c;特别适用于文本数据。 回译数据增强法 定义…

Three.js 和其他 WebGL 库 对比

在WebGL开发中&#xff0c;Three.js是一个非常流行的库&#xff0c;它简化了3D图形的创建和渲染过程。然而&#xff0c;市场上还有许多其他的WebGL库&#xff0c;如 Babylon.js、PlayCanvas、PIXI.js 和 Cesium&#xff0c;它们也有各自的特点和优势。本文将对Three.js 与这些常…

【04】MySQL数据库和数据表的基本操作详解与实例

文章目录 一、连接MySQL服务器二、数据库的基本操作2.1数据库的基本操作1. 创建数据库2. 选择数据库3. 删除数据库4.查询所有数据库5.修改数据库的字符集 2.2 数据表的基本操作1. 创建数据表2. 查看数据表结构3. 删除数据表4. 修改数据表5. 插入数据6. 查询数据7. 更新数据8. 删…

详解Qt QBuffer

文章目录 **QBuffer 的详解****前言****QBuffer 是什么&#xff1f;****QBuffer 的主要用途****构造函数****主要成员函数详解****1. open()****原型&#xff1a;****作用&#xff1a;****参数&#xff1a;****返回值&#xff1a;****示例代码&#xff1a;** **2. write()****原…

CTF-Hub SQL 报错注入(纯手动注入)

​ 当输入1时&#xff0c;发现只有查询正确&#xff0c;基本上可以判断出没有回显 开始注入(工具hackerBar) 题目是报错注入&#xff0c;方向就比较明显&#xff0c;大致说一下用到的函数和原理。 常见报错注入函数&#xff1a; 通过 floor() 报错注入通过 extractValue() …