使用bash脚本编译Qt工程

        最近在搭建Qt工程的编译服务器,需要通过shell脚本执行工程的编译过程,写在这里,总结最近的工作。

1. 构建过程

        以Windows为例,在QtCreator中左侧选择“项目”便可以看到编译的指令和参数,这些操作也会在我们点击“构建项目”时执行,执行的过程可以在“编译输出”的窗口中看到,包含命令和编译的日志。

        构建的步骤包含qmake和Make,有时也会用到Clean。我使用的命令也都基本来自于这里。

2. 过程分析(以MacOS为例,Windows同理)

        Make和Clean是依据Makefile文件进行的,而Makefile文件是qmake时生成的,所以第一步是qmake,那么在哪里执行qmake呢?

        第一次我的做法是这样子的:

cd 源码目录qmake xxx.pro                        #Makefile生成在源码目录cd ..mkdir build-xxx-Desktop_Qt_5_14_2... #创建影子编译的目录
cd build-xxx-Desktop_Qt_5_14_2...    #进入影子编译目录cp Makefile                          #从源码目录拷贝Makefile到影子编译目录/usr/bin/make -j8                    #编译

        这样的结果是,编译时候找不到xxx.pro文件,make失败。后经排查,发现在Makefile中Project字段有记录qmake对于xxx.pro文件的相对路径,所以先前qmake生成的Makefile文件中记录的xxx.pro是在当前目录中,后来拷贝至影子编译目录必然找不到所需资源。

        于是我将步骤修改为先创建影子编译目录,在影子编译目录中qmake,Make……这样的顺序就是正确的。

mkdir build-demo-Desktop_Qt_5_14_2_MinGW_64_bit-Release
cd build-demo-Desktop_Qt_5_14_2_MinGW_64_bit-Release/Users/xxxx/Qt5.14.2/5.14.2/clang_64/bin/qmake -o Makefile /path/to/demo.pro -spec macx-clang CONFIG+=release CONFIG+=x86_64 CONFIG+=qtquickcompiler/usr/bin/make -j8

Windows相同,只需把编译工具替换:

D:\Qt\Qt5.14.2\5.14.2\mingw73_32\bin\qmake.exe

D:\Qt\Qt5.14.2\Tools\mingw730_32\bin\mingw32-make.exe

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

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

相关文章

CAN总线数据链路层

CAN报文帧种类: 数据帧:用于发送节点向接收节点传送数据,是使用最多的帧类型远程帧:用于接收节点向某个发送节点请求数据错误帧:用于当某节点检测出错误时向其他节点通知错误的帧过载帧:用于接收节点向发送节点通知自身接收能力的帧帧间隔:将数据帧或远程帧与前面的帧分…

ElementUI之首页导航与左侧菜单

目录 一、Mock 1.1 什么是Mock.js 1.2 安装与配置 1.2.1 安装mock.js 1.2.2 引入mock.js 1.3 mock.js使用 1.3.1 定义测试数据文件 1.3.2 mock拦截Ajax请求 1.3.3 界面代码优化 二、总线 2.1 定义 2.2 类型分类 2.3 前期准备 2.4 配置组件与路由关系 2.4.1 配置…

Vue Mock.js介绍和使用与首页导航栏左侧菜单搭建

前言: 因为使用Vue开发,组件写的太多,组件与组件之间的传递数据复杂,所以要用到Mock和Bus事件 一,关于Mock 1.1.什么是Mock.js Mock.js是一个模拟数据的生成器,用来帮助前端调试开发、进行前后端的原型分离…

upload-labs靶场未知后缀名解析漏洞

upload-labs靶场未知后缀名解析漏洞 版本影响: phpstudy 版本:5.2.17 ​ 1 环境搭建 1.1 在线靶场下载,解压到phpstudy的www目录下,即可使用 https://github.com/c0ny1/upload-labs1.2 已启动:访问端口9000&…

似然和概率

前言 高斯在处理正态分布的首次提出似然,后来英国物理学家,费歇尔 概率是抛硬币之前,根据环境推断概率 似然则相反,根据结果推论环境 P是关于x的函数,比如x为正面朝上的结果,或者反面朝上的结果&#xf…

数据大爆炸:大数据分析如何改变我们的世界

文章目录 大数据分析的基本概念数据的三个V大数据分析的技术 大数据分析在商业中的应用1. 个性化营销2. 风险管理3. 供应链优化4. 客户服务 大数据分析在医疗保健中的应用1. 疾病预测2. 患者治疗3. 医疗设备监控 大数据分析在科学研究中的应用1. 天文学2. 生物学3. 气象学 大数…

pycharm中配置torch

在控制台cmd中安装好torch后,在pycharm中使用torch,需要进行简单设置即可。 在pycharm中新建一个工程,在file文件中打开setting 在setting中找到project interpreter编译器 找到conda environment的环境配置,设置好相应的目录 新…

2023年蓝帽杯取证复现

案件介绍 2021 年 5 月,公安机关侦破了一起投资理财诈骗类案件,受害人陈昊民向公安机关报案称其在微信上认识一名昵称 为 yang88 的网友,在其诱导下通过一款名为维斯塔斯的 APP ,进行投资理财,被诈骗 6 万余万元。接警…

华为OD机考算法题:篮球比赛

目录 题目部分 解读与分析 代码实现 题目部分 题目篮球比赛难度难题目说明篮球(5V5)比赛中,每个球员拥有一个战斗力,每个队伍的所有球员战斗力之和为该队伍的总体战斗力。现有 10 个球员准备分为两队进行训练赛,教练希望 2 个队伍的战斗力…

Java深入理解线程的三大特性

目录 1 CPU缓存导致可见性问题2 线程切换导致原子性问题3 性能优化导致有序性问题4 JMM(Java Memory Model)5 volatile6 synchronized 1 CPU缓存导致可见性问题 线程的三大特性: 可见性:Visibility有序性:Ordering原子性:Atomic…

谈谈最近招人的感受!

最近折腾新的项目,面试了很多实习生小伙伴,我说说我的一些「面试」感受, 虽然是一个老生常谈的话题,但是依然提一下。 准时很重要:提前一点时间,踩个点,别迟到,面试的过程中由于每个…

2023年前端流行什么技术和框架了?

Web前端三大主流框架有React、Vue.js和Angular,由于接触过Vue.js,接下来主讲最新的Vue3.0! Vue3.0作为最新版本的Vue.js框架,拥有更强大的性能和更丰富的功能,为低代码开发平台注入了全新的活力。而JNPF快速开发平台作…

浅谈xss

XSS 简介 XSS,全称Cross Site Scripting,即跨站脚本攻击,是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。需要强调的是,XSS不仅…

使用ElementUI结合Mock完成主页的搭建

目录 一、Mock ( 1 ) 讲述 ( 2 ) 作用 二、引用 三、主页搭建 学习后带来的收获 一、Mock ( 1 ) 讲述 Mock.js是一个用于前端开发中模拟数据的库。它可以帮助开发人员在前端开发过程中模拟接口返回的数据,从而实现前后端分离开发。Mock.js提供了一套简单易…

Python和Scrapy构建可扩展的框架

构建一个可扩展的网络爬虫框架是利用Python和Scrapy实现高效数据采集的重要技能。在本文中,我将为您介绍如何使用Python和Scrapy搭建一个强大灵活的网络爬虫框架。我们将按照以下步骤展开: 1. 安装Scrapy: 首先,确保您已经安装了…

如何计算3种卷积之后的尺寸(普通卷积,转置卷积,空洞卷积)

文章目录 前言一、普通卷积二、转置卷积三、空洞卷积 前言 三种卷积之后的feature map的尺寸如何计算。包括普通卷积,转置卷积,空洞卷积。可以在下面这个链接看到三种卷积的动态图。 卷积动态图 一、普通卷积 普通卷积比较简单了,其计算方式…

【python爬虫】爬虫所需要的爬虫代理ip是什么?

目录 前言 一、什么是爬虫代理 IP 二、代理 IP 的分类 1.透明代理 2.匿名代理 3.高匿代理 三、如何获取代理 IP 1.免费代理网站 2.付费代理服务 四、如何使用代理 IP 1.使用 requests 库 2.使用 scrapy 库 五、代理 IP 的注意事项 1.代理 IP 可能存在不稳定性 2…

DC电源模块的过热保护功能

BOSHIDA DC电源模块的过热保护功能 DC电源模块的过热保护功能是为了防止电源模块因长时间工作或外部环境因素导致的过热而损坏。在使用DC电源模块时,电源模块内部的电子元件会产生一定的热量,如果超过了元件所能承受的温度范围,就可能会发生…

【VsCode】vscode创建文件夹有小图标显示和配置

效果 步骤 刚安装软件后, 开始工作目录下是没有小图标显示的。 如下图操作,安装vscode-icons 插件,重新加载即可 创建文件夹,显示图标如下:

Jenkins学习笔记2

Jenkins下载安装: 从清华源开源镜像站上下载jenkins的安装包: 安装的是这个版本。 关于软件的版本,尽量使用LTS,长期支持。 首先是安装openjdk: yum install fontconfig java-11-openjdk[rootlocalhost soft]# java …