当前位置: 首页 > news >正文

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)

相关文章:

QT配置文件详解

TEMPLATElib TEMPLATE变量用于指定项目模板类型,其值可以是以下几种: app:建立一个应用程序的makefile,这是默认值。lib:建立一个库的makefile。vcapp:建立一个应用程序的Visual Studio项目文件。vclib&a…...

根据合约地址判断合约协议的方法

判断合约协议之前,需要了解一下什么是ERC165协议: ERC165 是以太坊中用于标准化接口检测的协议,由 Fabian Vogelsteller 在 2018 年创建 ,其核心内容主要包括以下方面: 接口定义 单一函数接口:ERC165 协议…...

联想YOGA Pro 14s至尊版电脑找不到独立显卡(N卡)问题,也无法安装驱动的问题

问题描述 电脑是联想YOGA Pro 14s至尊版,电脑上装的独立显卡是4060,一直是能够使用独立显卡的。然而有两次突然就找不到显卡了,NVIDIA CONTROL PANEL也消失了,而且也无法安装驱动。具体表现如下: 无法连接外接显示器…...

Spring Web开发注解和请求(1)

大家好我是小帅,今天我们来学习Spring Web MVC框架(入门级) 文章目录 1. 什么是 Spring Web MVC?1.1 MVC 定义1.2 什么是Spring MVC ? 2. 学习Spring MVC2.1 建⽴连接第一个spring MVC程序 3. web开发注解的解释3.1RestControlle…...

Supervisor使用教程

文章目录 [toc] Supervisor使用教程平台要求 安装supervisor本文测试的时候是使用Linux的yum安装的(其它方式未做测试)加入系统守护进行 Supervisor使用教程 在项目中,经常有脚本需要常驻运行的需求。以PHP脚本为例,最简单的方式…...

Spark基本命令详解

文章目录 Spark基本命令详解一、引言二、Spark Core 基本命令1、Transformations(转换操作)1.1、groupBy(func)1.2、filter(func) 2、Actions(动作操作)2.1、distinct([numTasks])2.2、sortBy(func, [ascending], [numTasks]) 三、…...

Three.js 相机视角的平滑过渡与点击模型切换视角

在 Three.js 中,实现相机视角的平滑过渡和点击模型切换到查看模型视角是一个常见且有用的功能。这种效果不仅能提升用户体验,还能为场景互动添加更多的动态元素。 1. 基本设置 首先,我们需要创建一个基本的 Three.js 场景,包括相…...

jenken 打包linux包遇到的问题(环境变量)

环境变量问题 我们jenkens 打包的时候 远程打包 通过ssh 去在服务器上调用脚本 环境变量没有去自动加载 代码打包的时候总是提示相关的so文件找不到 解决方案在 相关程序的make之前 把环境变量加在前面 我这里直接将变量加载代码的最前面...

使用 Go 语言中的 Context 取消协程执行

使用 Go 语言中的 Context 取消协程执行 在 Go 语言中,协程(goroutine)是一种轻量级的线程,非常适合处理并发任务。然而,如何优雅地取消正在运行的协程是一个常见的问题。本文将通过一个具体的例子来展示如何使用 con…...

python图像彩色数字化

效果展示&#xff1a; 目录结构&#xff1a; alphabets.py GENERAL {"simple": "%#*-:. ","complex": "$B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_~<>i!lI;:,\"^. " } # Full list could be found here…...

cesium 3dtile ClippingPlanes 多边形挖洞ClippingPlaneCollection

原理就是3dtiles里面的属性clippingPlanes 采用ClippingPlaneCollection&#xff0c;构成多边形来挖洞。 其次就是xyz法向量挖洞 clippingPlanes: new this.ffCesium.Cesium.ClippingPlaneCollection({unionClippingRegions: true, // true 表示多个切割面能合并为一个有效的…...

docker 僵尸进程问题

docker僵尸进程 子进程结束后&#xff0c;父进程没有回收该进程资源&#xff08;父进程可能没有wait&#xff09;&#xff0c;子进程残留资源存放与内核中&#xff0c;就变为僵尸进程(zombie) 场景分析&#xff1a;python脚本A中执行B应用&#xff0c;将A部署在docker中&#…...

微软要求 Windows Insider 用户试用备受争议的召回功能

拥有搭载 Qualcomm Snapdragon 处理器的 Copilot PC 的 Windows Insider 计划参与者现在可以试用 Recall&#xff0c;这是一项臭名昭著的快照拍摄 AI 功能&#xff0c;在今年早些时候推出时受到了很多批评。 Windows 营销高级总监 Melissa Grant 上周表示&#xff1a;“我们听…...

husky,commit规范,生成CHANGELOG.md,npm发版

项目git提交工程化&#xff08;钩子&#xff0c;提交信息commit message&#xff09;&#xff0c;npm修改版本&#xff0c;需要涉及到的包&#xff1a; husky&#xff0c;允许在git钩子中执行不同的脚步&#xff0c;如commitlint&#xff0c;eslint&#xff0c;prettier&#…...

DETR:一种新颖的端到端目标检测与分割框架

DETR&#xff1a;一种新颖的端到端目标检测与分割框架 摘要&#xff1a; 随着深度学习技术的发展&#xff0c;目标检测和图像分割任务取得了显著的进步。然而&#xff0c;传统的基于区域提名的方法在处理这些问题时存在一定的局限性。为此&#xff0c;Facebook AI Research&am…...

前端js面试知识点思维导图(脑图)

如果看着不清晰可以去https://download.csdn.net/download/m0_73761441/90058523访问下载&#xff0c;无需积分 使用百度脑图制作&#xff0c;可以一键导入下面的文本生成自己的脑图 js相关面试题、知识点 数据类型 1. 数据类型分类&#xff1f;分别包含&#xff…...

【Java基础入门篇】一、变量、数据类型和运算符

Java基础入门篇 一、变量、数据类型和运算符 1.1 变量 计算机中的数据表示方式是&#xff1a;“二进制(0/1)”&#xff0c;但是同时也可以兼容其他进制&#xff0c;例如八进制、十进制、十六进制等。 Java变量的本质是&#xff1a;存储在固定空间的内容&#xff0c;变量名是…...

【llamafactory】安装与环境配置

拉取镜像 git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory创建虚拟环境 conda create -n llamafactory python3.10 conda activate llamafactory安装所需依赖 pip install -e ".[torch,vllm,optimum,auto_gptq]"...

Vue 3 + Vuex 埋点实现指南

在现代前端开发中&#xff0c;数据分析和用户行为追踪是不可或缺的部分。本文将介绍如何在 Vue 3 项目中实现埋点功能&#xff0c;具体使用 Vuex 进行状态管理&#xff0c;并通过自定义 Hook 实现埋点逻辑。 目录 项目结构实现埋点逻辑使用埋点功能总结 1.项目结构 我们将创…...

电子应用设计方案-30:智能扫地机器人系统方案设计

智能扫地机器人系统方案设计 一、引言 随着人们生活节奏的加快和对生活品质的追求&#xff0c;智能家居产品越来越受到消费者的青睐。智能扫地机器人作为一种能够自动清扫地面的智能设备&#xff0c;为人们节省了大量的时间和精力。本方案旨在设计一款功能强大、智能化程度高、…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

篇章二 论坛系统——系统设计

目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...

小智AI+MCP

什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析&#xff1a;AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github&#xff1a;https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...