QT配置文件详解
TEMPLATE=lib
TEMPLATE
变量用于指定项目模板类型,其值可以是以下几种:
app
:建立一个应用程序的makefile,这是默认值。lib
:建立一个库的makefile。vcapp
:建立一个应用程序的Visual Studio项目文件。vclib
:建立一个库的Visual Studio项目文件。subdirs
:创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile12。
当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图像彩色数字化
效果展示: 目录结构: 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,构成多边形来挖洞。 其次就是xyz法向量挖洞 clippingPlanes: new this.ffCesium.Cesium.ClippingPlaneCollection({unionClippingRegions: true, // true 表示多个切割面能合并为一个有效的…...
docker 僵尸进程问题
docker僵尸进程 子进程结束后,父进程没有回收该进程资源(父进程可能没有wait),子进程残留资源存放与内核中,就变为僵尸进程(zombie) 场景分析:python脚本A中执行B应用,将A部署在docker中&#…...
微软要求 Windows Insider 用户试用备受争议的召回功能
拥有搭载 Qualcomm Snapdragon 处理器的 Copilot PC 的 Windows Insider 计划参与者现在可以试用 Recall,这是一项臭名昭著的快照拍摄 AI 功能,在今年早些时候推出时受到了很多批评。 Windows 营销高级总监 Melissa Grant 上周表示:“我们听…...
husky,commit规范,生成CHANGELOG.md,npm发版
项目git提交工程化(钩子,提交信息commit message),npm修改版本,需要涉及到的包: husky,允许在git钩子中执行不同的脚步,如commitlint,eslint,prettier&#…...
DETR:一种新颖的端到端目标检测与分割框架
DETR:一种新颖的端到端目标检测与分割框架 摘要: 随着深度学习技术的发展,目标检测和图像分割任务取得了显著的进步。然而,传统的基于区域提名的方法在处理这些问题时存在一定的局限性。为此,Facebook AI Research&am…...
前端js面试知识点思维导图(脑图)
如果看着不清晰可以去https://download.csdn.net/download/m0_73761441/90058523访问下载,无需积分 使用百度脑图制作,可以一键导入下面的文本生成自己的脑图 js相关面试题、知识点 数据类型 1. 数据类型分类?分别包含ÿ…...
【Java基础入门篇】一、变量、数据类型和运算符
Java基础入门篇 一、变量、数据类型和运算符 1.1 变量 计算机中的数据表示方式是:“二进制(0/1)”,但是同时也可以兼容其他进制,例如八进制、十进制、十六进制等。 Java变量的本质是:存储在固定空间的内容,变量名是…...
【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 埋点实现指南
在现代前端开发中,数据分析和用户行为追踪是不可或缺的部分。本文将介绍如何在 Vue 3 项目中实现埋点功能,具体使用 Vuex 进行状态管理,并通过自定义 Hook 实现埋点逻辑。 目录 项目结构实现埋点逻辑使用埋点功能总结 1.项目结构 我们将创…...
电子应用设计方案-30:智能扫地机器人系统方案设计
智能扫地机器人系统方案设计 一、引言 随着人们生活节奏的加快和对生活品质的追求,智能家居产品越来越受到消费者的青睐。智能扫地机器人作为一种能够自动清扫地面的智能设备,为人们节省了大量的时间和精力。本方案旨在设计一款功能强大、智能化程度高、…...
HTML飞舞的爱心(完整代码)
写在前面 HTML语言实现飞舞的爱心完整代码。 完整代码 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><title>飞舞爱心</title><style>* {margin: 0;padding: 0;}html,body {overflow: hidd…...
android shader gl_Position是几个分量
在Android的OpenGL ES中,gl_Position是顶点着色器(Vertex Shader)的一个内置输出变量,它用于指定顶点在裁剪空间(Clip Space)中的位置。gl_Position是一个四维向量(4-component vectorÿ…...
spine 动画层 动态权重
前奏.业务背景 这边想实现一个功能,项目中有 一只猫 猫的头会盯着逗猫棒移动。因为素材还没到所以这里使用了 spine 自带的猫头鹰。他的动画 刚好挺有针对性:(关联上篇)https://blog.csdn.net/nicepainkiller/article/details/144…...
《Python基础》之Python中可以转换成json数据类型的数据
目录 一、JSON简介 JSON有两种基本结构 1、对象(Object) 2、数组(Array) 二、将数据装换成json数据类型方法 三、在Python中,以下数据类型可以直接转换为JSON数据类型 1、字典(Dictionary)…...
在oracle下载jdk显示400 Bad Request Request Header Or Cookie Too Large
下载JDK17,官网地址:【https://www.oracle.com/cn/java/technologies/downloads/#jdk17-windows】 问题: 出现 400 Bad Request: Request Header Or Cookie Too Large 错误,通常是由于浏览器存储的 Cookies 或请求头过大所导致的…...
MongoDB注入攻击测试与防御技术深度解析
MongoDB注入攻击测试与防御技术深度解析 随着NoSQL数据库的兴起,MongoDB作为其中的佼佼者,因其灵活的数据模型和强大的查询能力,受到了众多开发者的青睐。然而,与任何技术一样,MongoDB也面临着安全威胁,其…...
【Java基础入门篇】前言
Java基础入门篇 本系列内容主要针对Java基础知识,总共包含四大部分内容: 变量、数据类型和运算符控制语句和递归算法面向对象和JVM底层分析数组和排序 学习需要具备: IDEA编译器 JDK1.8版本 写在前面 在Java入门的最开始,我们需…...
Oracle 建表的存储过程
建表的存储过程 下面是建表的存储过程,用途:通过不同的表,根据不同过滤条件,得到某个字段,例如neid,然后创建一个新表T,表T的表名为拼接XXXX_XXX_neid,表T的字段自行添加 xxx&…...
【Debug】hexo-github令牌认证 Support for password authentication was removed
title: 【Debug】hexo-github令牌认证 date: 2024-07-19 14:40:54 categories: bug解决日记 description: “Support for password authentication was removed on August 13, 2021.” cover: https://pic.imgdb.cn/item/669b38ebd9c307b7e9f3e5e0.jpg 第一章 第一篇博客记录一…...
torch.is_floating_point(input)
torch.is_floating_point(input) input: 输入张量 如果输入的数据类型是 浮点数据类型 ,则返回 True。否则返回False。 浮点数据类型:torch.float64、torch.float32、torch.float16 、 torch.bfloat16 import torch# 创建一个浮点数张量 float_tensor torch.te…...
做网站开发找哪家公司/排名优化公司口碑哪家好
tcp是流式传输 假设A给B通过TCP发了200字节, 然后又发了300字节, 此时B调用recv(设置预期接受1000个字节),那么请问B实际接受到多少字节? 根据tcp粘包特性,可知, B端调用一次recv&am…...
哈尔滨免费建站模板/个人网站注册平台
一.角色以及入口: 角色:系统管理员,开发人员 入口:服务管理--修改服务 二.页面元素检查: 对页面初始化的检查,即页面打开后,对页面不做任何操作时的元素检查。(破页;js错;demo对比等…...
网站建设一条龙全包seo/北京seo管理
pdf文件太大怎么变小?如果你是Windows电脑,可以使用PDF编辑器来减小PDF文件的大小,比如这款出色的PDF压缩工具-易我PDF编辑器,它的“压缩”功能提供了两种减小文件大小的方法,这使得它既适合那些只想获得更小的PDF的人…...
温州网站建设专业的公司/网络营销企业案例
用OpenInventor实现的NeHe OpenGL教程-第八课这节课我们将在第七节课的基础上增加纹理透明的效果。在OpenGL中,透明效果是通过“融合”(Blend)方式实现的。在NeHe教程中已经对融合的原理做了详细的讨论。这里我们就不再详细讨论了…...
免费创办网站/html网页制作app
大小:55.24MB语言:简体分类: 网页辅助版本: 电脑版立即下载 查看详情本文将给大家介绍如何使用八爪鱼采集器采集分页列表页面上的信息,并附带给大家讲一下ajax延时设置。目的是让大家了解怎么创建循环翻页并能正常采集…...
上海做网站的费用/站长之家是什么
C是一种编程语言,但又不是一种单一的编程语言,它可以包含以下四种子语言,也即C的四个组成部分: 1、C部分。C语言的基本语法,内置类型、预处理、数组、指针等。 2、面向对象部分。类,封装、继承、多态、虚…...