cmake + mingw32构建和编译第三方lib库, qt 使用lib库

欢迎关注更多精彩
关注我,学习常用算法与数据结构,一题多解,降维打击。

背景

  • qt 有两种编译器,分别是visual studio和MinGW。
  • 很多第三方库提供编译好的visual studio 库,MinGW库需要自己编译。
  • 喜欢MinGW没有太多版本,不像visual studio 有种版本。
  • 具体QT配置第三方库也比较简单。

这里以OpenMesh为例学习一下Cmake+MinGW编译lib库成果,并用Qt引用

需要的工具

  • Cmake https://cmake.org/download/
  • Qt Creator https://www.qt.io/zh-cn/download
  • OpenMesh 源代码 https://www.graphics.rwth-aachen.de/software/openmesh/download/
    在这里插入图片描述

Cmake 目录:C:\Program Files\CMake\bin

安装好Qt 后会有自带的mingw 编译器。
目录是:C:/Qt/Qt5.12.11/Tools/mingw730_64/bin

cmake, mingw 添加到系统环境变量path
在这里插入图片描述

OpenMesh 解压目录 不要中文目录
D:/OpenMesh/OpenMesh-10.0.0

构建产物目录:
D:/OpenMesh/OpenMesh-10.0.0/build
在这里插入图片描述

安装目录(默认):C:\Program Files (x86)\OpenMesh

可能出现的错误或坑

构建阶段

错误1:CMake Error: CMake was unable to find a build program corresponding to “MinGW Makefiles”. CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
解决方法:配置 CMAKE_MAKE_PROGRAM = C:/Qt/Qt5.12.11/Tools/mingw730_64/bin/mingw32-make.exe
在这里插入图片描述


错误2 :No CMAKE_C_COMPILER could be found.
解决方法:配置 CMAKE_C_COMPILER = C:/Qt/Qt5.12.11/Tools/mingw730_64/bin/gcc.exe
在这里插入图片描述


错误3:No CMAKE_CXX_COMPILER could be found.
解决方法:配置 CMAKE_CXX_COMPILER = C:/Qt/Qt5.12.11/Tools/mingw730_64/bin/g++.exe
在这里插入图片描述

编译阶段

错误:C:/Qt/Qt5.12.11/Tools/mingw730_64/bin/…/lib/gcc/x86_64-w64-mingw32/7.3.0/…/…/…/…/x86_64-w64-mingw32/bin/as.exe: CMakeFiles\OpenMeshCore.dir\Utils\PropertyCreator.cc.obj: too many sections (41925)
原因:是编译的文件太大了
解决方法:CMAKE_CXX_FLAGS=-Wa,-mbig-obj, 重新Configure , Generate
在这里插入图片描述

构建

在这里插入图片描述
先Configure 再Generate
在这里插入图片描述

关键配置

配置
CMAKE_MAKE_PROGRAMC:/Qt/Qt5.12.11/Tools/mingw730_64/bin/mingw32-make.exe
CMAKE_C_COMPILERC:/Qt/Qt5.12.11/Tools/mingw730_64/bin/gcc.exe
CMAKE_CXX_COMPILERC:/Qt/Qt5.12.11/Tools/mingw730_64/bin/g++.exe
CMAKE_CXX_FLAGS-Wa,-mbig-obj

成功画面
在这里插入图片描述

编译&安装

在这里插入图片描述

管理员身份打开cmd命令行, 管理员身份 管理员身份 管理员身份

进入到D:/OpenMesh/OpenMesh-10.0.0/build运行 mingw32-make -j15
在这里插入图片描述
成功画面
在这里插入图片描述
再运行mingw32-make install
在这里插入图片描述

引用运行

测试代码库:https://gitcode.com/chenbb1989/qt-opengl/tree/master/includeTest

qt项目下 .pro文件加入以下语句

INCLUDEPATH += 'C:/Program Files (x86)/OpenMesh/include'
DEPENDPATH += 'C:/Program Files (x86)/OpenMesh/include'LIBS += -L'C:/Program Files (x86)/OpenMesh/lib/' -llibOpenMeshCore
#include "mainwindow.h"#include <QApplication>
#include <QDebug>
#include<OpenMesh/Core/IO/MeshIO.hh>
#include<OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh>int main(int argc, char *argv[])
{using MyMesh = OpenMesh::TriMesh_ArrayKernelT<>;MyMesh mesh;MyMesh::VertexHandle vhandle[4];MyMesh::FaceHandle   fhandle;// 添加4个点vhandle[0] = mesh.add_vertex(MyMesh::Point(-1, -1,  1));vhandle[1] = mesh.add_vertex(MyMesh::Point( 1, -1,  1));vhandle[2] = mesh.add_vertex(MyMesh::Point( 1,  1,  1));vhandle[3] = mesh.add_vertex(MyMesh::Point(-1,  1,  1));// 添加4边形,会被自动分成2个三角形std::vector<MyMesh::VertexHandle>  face_vhandles;face_vhandles.push_back(vhandle[0]);face_vhandles.push_back(vhandle[1]);face_vhandles.push_back(vhandle[2]);face_vhandles.push_back(vhandle[3]);fhandle = mesh.add_face(face_vhandles);//OpenMesh::IO::read_mesh(mesh, "D:/selfad/qtapp/qt-with-open-gl/objects/rock/rock.obj");qDebug()<<mesh.n_vertices();qDebug()<<mesh.n_faces();return 0;
}
输出 
4
2

本人码农,希望通过自己的分享,让大家更容易学懂计算机知识。创作不易,帮忙点击公众号的链接。

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

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

相关文章

vs2022启动cmake项目(qt+c++)

1.本工程&#xff0c;如图&#xff0c;1个cmakelist.txt3个文件 2.启动vs 3.选择文件夹 4.进入这个页面&#xff0c;就说明配置没问题 5.启动 6.最后会自己生成其他文件

Proteus 8 的使用记录

创建仿真文件 新建文件&#xff1a;默认下一步&#xff0c;至完成创建。 功能选择如图&#xff1a; 放置器件 常用元器件名称 keywords 常用51单片机 AT89C52 晶振 CRYSTAL 电阻 RES 排阻 RESPACK-8 瓷片电容 CAP 电解电容 CAP-ELEC 单刀单掷开关 S…

网络协议学习——以太网协议

目录 ​编辑 一&#xff0c;以太网简介 二&#xff0c;以太网通信的过程 为什么不用IP地址&#xff1f; 过程 MAC帧 MAC帧的字段介绍 ARP协议 传输过程的一些问题 RARP协议 提高效率 三&#xff0c;其他问题 ARP诈骗问题 URL解析过程 一&#xff0c;以太网简介 …

python图书馆图书借阅系统含网上商城管理系统7d538

&#xff0c;python语言&#xff0c;django框架进行开发&#xff0c;后台使用MySQL数据库进行信息管理&#xff0c;设计开发的图书管理系统。通过调研和分析&#xff0c;系统拥有管理员和用户两个角色&#xff0c;主要具备注册登录、个人信息修改、用户、图书分类、图书信息、借…

Django交易商场

Hello&#xff0c;我是小恒不会java 最近学习django&#xff0c;写了一个demo,学到了不少东西。 我在GitHub上开源了&#xff0c;提示‘自行查看代码&#xff0c;维护&#xff0c;运行’。 最近有事&#xff0c;先发布代码了&#xff0c;我就随缘维护更新吧 介绍&#xff1a; 定…

构建智能生态:详解同城O2O外卖跑腿APP的开发技术

同城O2O外卖跑腿APP作为这一新型服务的代表&#xff0c;其开发技术成为了当下技术界的热点之一。小编将深入讲解同城O2O外卖跑腿APP的开发技术&#xff0c;以期为开发者提供一些有益的参考和指导。 需求分析与功能设计 在开发同城O2O外卖跑腿APP之前&#xff0c;首先需要进行充…

如何更换网络IP地址,简单几步轻松搞定

在数字化日益普及的今天&#xff0c;网络IP地址作为设备在网络中的标识&#xff0c;扮演着极其重要的角色。有时&#xff0c;出于安全考虑、网络布局调整或解决特定问题的需要&#xff0c;我们可能需要更换网络IP地址。虎观代理将详细介绍如何更换网络IP地址&#xff0c;帮助用…

LeetCode-152. 乘积最大子数组【数组 动态规划】

LeetCode-152. 乘积最大子数组【数组 动态规划】 题目描述&#xff1a;解题思路一&#xff1a;动态规划五部曲&#xff1a;定推初遍举解题思路二&#xff1a;因为每一个状态只与前一个状态有关&#xff0c;可以使用「滚动变量」技巧&#xff0c;使用常数个变量完成这道问题。解…

2024年MathorCup数模竞赛C题超详细解题思路

妈妈杯本次比赛报名队伍号高达12500&#xff0c;这也就意味着大概一万只队伍参加报名&#xff0c;仅仅在报名人数这一项&#xff0c;妈妈杯已经成为美赛国赛之后的第三大竞赛。C题作为本次竞赛最简单也最容易获奖的题目&#xff0c;本文将给大家带来手把手超详细解题思路。 注…

数据结构基础 ——数组VS链表(二)

一、数组 数组对应的英文是array&#xff0c;是有限个相同类型的变量所组成的有序集合&#xff0c;数组中的每一个变量称为元素。数组是最简单、最常用的数据结构。 数组存储格式&#xff1a; 在Python语言中&#xff0c;并没有直接使用数组这个概念&#xff0c;而是使用列表(…

投资认知第一篇-股票分红是怎么回事?

购买股票的收益分为两种&#xff0c;一种是低价买高价卖的差价&#xff08;也就是俗称的炒股&#xff09;&#xff0c;另一种就是分红收益。购买一家上市公司的股份&#xff0c;投资者有权享受其分红&#xff0c;这是投资者的权益。一般来讲&#xff0c;上市公司分红有两种形式…

重磅,新GPT-4-Turbo重新夺回大模型第一名

好消息&#xff0c;新版 GPT-4 Turbo 今天开始现已向所有付费 ChatGPT 用户开放。GPT-4 Turbo提高了写作、数学、逻辑推理和编码能力。上下文长度128k 输出速度更快。现在已经开始陆续推送&#xff0c;如果你发现你的知识库截止时间是2024年4月&#xff0c;那么就是最新版本了&…

蓝桥杯 — — RSA解密

RSA解密 友情链接&#xff1a;RSA解密 题目&#xff1a; 思路&#xff1a; 对于这道题目&#xff0c;给出了三个已知量n d C&#xff0c;要我们进行解密&#xff0c;对于解密的公式 X C e m o d n X C^e \mod n XCemodn来讲&#xff0c;我们有唯一的参数e是未知的&#xf…

.[[backup@waifu.club]].svh勒索病毒数据怎么处理|数据解密恢复

尊敬的读者&#xff1a; 近年来&#xff0c;随着信息技术的迅猛发展&#xff0c;网络安全问题日益凸显&#xff0c;其中勒索病毒成为了一大威胁。.[[backupwaifu.club]].svh、.[[MyFilewaifu.club]].svh勒索病毒就是其中之一&#xff0c;它以其独特的传播方式和恶劣的加密手段…

【论文阅读——Profit Allocation for Federated Learning】

1.摘要 由于更为严格的数据管理法规&#xff0c;如《通用数据保护条例》&#xff08;GDPR&#xff09;&#xff0c;传统的机器学习服务生产模式正在转向联邦学习这一范式。联邦学习允许多个数据提供者在其本地保留数据的同时&#xff0c;协作训练一个共享模型。推动联邦学习实…

山洪灾害防治监测报警系统方案

一、概述 我国是全球地区复杂程度最高的国家之一&#xff0c;多种气候和地形特征&#xff0c;特定的地质环境条件决定了我国地质灾害呈现增长和频发的态势。加之全球气候的变化使得我国极端、恶劣的天气在各地区发生的频率逐渐增高。据统计&#xff0c;在中国有1300多个乡镇&am…

交换机与路由器缓冲区:寻找完美大小

*本文系SDNLAB编译自瞻博网络技术专家兼高级工程总监Sharada Yeluri领英 在路由器和交换机中&#xff0c;缓冲区至关重要&#xff0c;可以防止网络拥塞期间的数据丢失。缓冲区到底要多大&#xff1f;这个问题在学术界和工业界一直备受争议。本文探讨了高端路由器中数据包缓冲的…

PSPICE、Multisim和Saber哪个更适合电路仿真?没想到是它

PSPICE、Multisim和Saber这三个软件都是非常流行的模拟电路仿真工具&#xff0c;它们各自有各自的优缺点&#xff0c;我简单讲一下&#xff1a; PSPICE&#xff1a; 优点&#xff1a; 精度高&#xff1a;PSPICE是专业的电路仿真软件&#xff0c;可以进行高精度的模拟电路仿真…

关于DNS解析那些事儿,了解DNS解析的基础知识

DNS&#xff0c;全称Domain Name System域名系统&#xff0c;是一个将域名和IP地址相互映射的一个分布于世界各地的分布式数据库&#xff0c;而DNS解析就是将域名转换为IP地址的过程&#xff0c;使人们可以轻松实现通过域名访问网站。DNS解析是网站建设非常关键的一步&#xff…

深度学习在三维点云处理与三维重建中的应用探索

目录 点云数据处理 数据清洗 数据降噪和简化 数据配准 特征提取 数据增强 数据组织 性能考量 PointNet PointNet ​编辑 算法问题 改进方法 三维重建 重建算法 架构模块 流程步骤 标记说明 优点和挑战 点云数据处理 数据清洗 去噪&#xff1a;点云数据通常…