MeshLab 2022.02 源码编译教程
目录
前言
编译准备
编译配置
1. 源码下载
2. 路径配置
3. 命令行编译
4. 报错解决
结语
前言
MeshLab是三维立体网格处理软件,为自由软件,首先发布于2005年年底。此软件可显示及处理大量的非结构化网格,并提供编辑、清理、修复及查核等功能,可对模型进行渲染及转换,
(以上内容来自维基百科)
最近工作中需要用到 MeshLab 中的某个功能,就编译源码研究了一下,本文简单说一下编译教程。
编译准备
本文所用编译工具及编译环境如下:
- Windows 10 21H2 x64,Windows SDK 19041
- Git 2.36.0
- CMake 3.25.1
- Qt 5.15.2
- Visual Studio 2019
编译配置
编译参考:Build instructions
1. 源码下载
使用 Git 克隆 MeshLab 源码
git clone --recursive https://github.com/cnr-isti-vclab/meshlab
MeshLab 其中还使用到了其他的开源库, “recursive ”参数可以循环克隆所依赖的子仓库。
(如果是下载 MeshLab 源码进行 CMake-gui 进行编译,则会提示很多库找不到,最终虽然也能编译通过,但是因为缺少很多库,功能会有缺失)
2. 路径配置
新建编译文件夹 “build” 和安装文件夹 “install”,本文所使用的编译路径如下:
源码路径:G:/meshlab
编译路径:G:/meshlab/build
安装路径:G:/meshlab/install
ps:
如果电脑本机有 Eigen 库或者编译(安装)有 Eigen 库的相关软件,在后续编译的过程中,Eigen 库的路径可能会导致报错,比如 MITK 。
打开文件 "G:\meshlab\src\vcglib\CMakeLists.txt",修改 37 行和 40 行中的 EIGEN_INCLUDE_DIRS,本文设置如下:
if(VCG_ALLOW_SYSTEM_EIGEN AND EIGEN3_INCLUDE_DIR)message(STATUS "- Eigen - using system-provided library")set(EIGEN_INCLUDE_DIRS "G:/meshlab/src/vcglib/eigenlib")
elseif(VCG_ALLOW_BUNDLED_EIGEN AND EXISTS "${VCG_EIGEN_DIR}/Eigen/Eigen")message(STATUS "- Eigen - using bundled source")set(EIGEN_INCLUDE_DIRS "G:/meshlab/src/vcglib/eigenlib")
else()
3. 命令行编译
在开始菜单中的应用列表中,找到文件夹 Visual Studio 2019,使用管理原身份打开 “x64 Native Tool Command Prompt for VS 2019”。
- 切换路径至编译路径 “cd /d G:/meshlab/build”
- 使用 CMake 编译,命令行中输入一下命令:
cmake .. -DQt5_DIR=D:/Qt/Qt5.15.2/5.15.2/msvc2019_64/lib/cmake/Qt5 -DQt5Core_DIR=D:/Qt/Qt5.15.2/5.15.2/msvc2019_64/lib/cmake/Qt5Core -DQt5Gui_DIR=D:/Qt/Qt5.15.2/5.15.2/msvc2019_64/lib/cmake/Qt5Gui -DQt5Network_DIR=D:/Qt/Qt5.15.2/5.15.2/msvc2019_64/lib/cmake/Qt5Network -DQt5OpenGL_DIR=D:/Qt/Qt5.15.2/5.15.2/msvc2019_64/lib/cmake/Qt5OpenGL -DQt5Widgets_DIR=D:/Qt/Qt5.15.2/5.15.2/msvc2019_64/lib/cmake/Qt5Widgets -DQt5Xml_DIR=D:/Qt/Qt5.15.2/5.15.2/msvc2019_64/lib/cmake/Qt5Xml -DCMAKE_INSTALL_PREFIX=G:/meshlab/install
其中前几个是 Qt 模块路径,替换为自己本机对应的 Qt 模块路径即可。
最后一个是安装路径,替换为自己上一步中设置的安装路径,不设置会默认安装在 C 盘。
配置完成后回车编译即可,在执行过程中,会下载上文中所提到的缺失的库,等待配置完成即可。 在编译路径会生成 MeshLab 解决方案,使用 VS 2019 打开 MeshLab.sln,编译选项改为 “Release x64”,直接生成 “ALL_BUILD” 即可,等待编译完成,生成 “INSTALL” 安装。
4. 报错解决
- 常量中有换行符
项目 “meshlab”、“edit_align”、“edit_pickpoints” 三个项目会报该错误,代码中有 Unicode 字符造成的,在三个项目中分别 “右键 -> 属性 -> 配置属性 -> C/C++ -> 命令行”,在其他选项的输入框中最后加上 “/utf-8” 即可。 - 运行 meshlab.exe 会报错 “无法定位程序输入点 ...”
这是 Qt 的依赖问题导致的,手动发布一下就好了。
新建临时文件夹 temp,复制安装路径下的 meshlab.exe 到该临时文件夹。
在开始菜单中的应用列表中,找到文件夹 Qt 安装文件夹下的 “Qt 5.15.2 (MSVC 2019 64bit)”命令行,使用命令 “cd /d G:/meshlab/temp" 切换至临时文件夹路径,执行命令 “windeployqt meshlab.exe” 发布程序,会自动复制一些 Qt 依赖文件至该路径。
最后将多出来的一堆文件,复制到安装路径即可成功运行,使用 VS 运行的话,就复制到 “G:/meshlab/build/src/distrib/Release”
结语
以上就是所有的编译教程,不同的情况编译可能会有不同的情况,欢迎交流。
附录:
MeshLab 编译过程中下载的各个依赖库
-- Downloading Boost from https://boostorg.jfrog.io/artifactory/main/release/1.75.0/source/boost_1_75_0.zip
-- Downloading CGAL from https://github.com/CGAL/cgal/releases/download/v5.2.1/CGAL-5.2.1.zip
-- Downloading CGAL from https://www.meshlab.net/data/libs/CGAL-5.2.1.zip
-- Downloading CGAL auxiliary libraries from https://github.com/CGAL/cgal/releases/download/v5.2.1/CGAL-5.2.1-win64-auxiliary-libraries-gmp-mpfr.zip
-- Downloading Levmar from http://users.ics.forth.gr/~lourakis/levmar/levmar-2.6.tgz
-- Downloading Lib3DS from http://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/lib3ds/lib3ds-1.3.0.zip
-- Downloading Lib3DS from https://www.meshlab.net/data/libs/lib3ds-1.3.0.zip
-- Downloading LibIGL from https://github.com/libigl/libigl/archive/refs/tags/v2.4.0.zip
-- Downloading muparser from https://github.com/beltoforion/muparser/archive/refs/tags/v2.3.3-1.zip
-- Downloading muparser from https://www.meshlab.net/data/libs/muparser-2.3.3-1.zip
-- Downloading nexus from https://github.com/cnr-isti-vclab/nexus/archive/refs/heads/master.zip
-- Downloading corto from https://github.com/cnr-isti-vclab/corto/archive/refs/heads/master.zip
-- Downloading OpenCTM from https://sourceforge.net/projects/openctm/files/OpenCTM-1.0.3/OpenCTM-1.0.3-src.zip/download
-- Downloading Qhull from https://github.com/qhull/qhull/archive/refs/tags/2020.2.zip
-- Downloading Structure Synth from https://github.com/alemuntoni/StructureSynth/archive/refs/tags/1.5.1.zip
-- Downloading tinygltf from https://github.com/syoyo/tinygltf/archive/refs/tags/v2.6.3.zip
-- Downloading u3d from https://github.com/alemuntoni/u3d/archive/refs/tags/1.5.1.zip
-- Downloading Xerces-C from https://dlcdn.apache.org//xerces/c/3/sources/xerces-c-3.2.4.zip
-- Downloading LibE57 from https://github.com/asmaloney/libE57Format/archive/refs/tags/v2.3.0.zip
-- Downloading corto from https://github.com/cnr-isti-vclab/corto/archive/refs/heads/master.zip
MeshLab 2022.02 源码编译教程相关推荐
- tx2+opencv源码编译教程(tx2+opencv4.4.0+opencv_contrib-4.4.0)
tx2+opencv源码编译教程(tx2+opencv4.4.0+opencv_contrib-4.4.0) 一.卸载TX2上已安装的opencv 打开终端,输入以下指令卸载已经安装的opencv: ...
- Spring 6 源码编译教程分享~
前言:Spring Boot 3 RELEASE版本于 2022年11月24日 正式发布,此次Spring Boot里程碑的升级也要求了最低JDK 17 和 Spring Framework 6 ,其 ...
- tensorflow源码编译教程_源码编译安装tensorflow 1.8
参考官方指南 基本要求 官网测试过的源代码配置如下: image 也就是说,按照这个版本安装的话不应该再产生版本的问题了. 我的配置 ubuntu 16 python 2.7 nccl 2.3 gcc ...
- SQLite源码编译教程
SQLite源码编译安装 SQLite简介 编译安装 源码下载 编译过程 demo实例 总结 SQLite简介 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用M ...
- 最好用的Redis Desktop Manager 0.9.3 版本下载 以及源码编译教程
文章目录 一.前言 二.编译教程 2.1 [redis destop manager 的源码地址](https://github.com/uglide/RedisDesktopManager) 2.2 ...
- 可视化工具VisIt源码编译教程(Windows,图文讲解)
我新建了一个VisIt软件的交流qq群:1169585995,欢迎大家加入一起交流,一起学习! 所用软件及其版本 用于源码编译的软件及版本如下: Windows版本:win10 VisIt版本:vis ...
- orangepi升级linux内核,orangePi源码编译教程
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? #环境 ubuntu 12.04.5 64位 8G内存 jdk-6u45-linux-x64.bin 64位JDK6 板 ...
- 怎么查看MySQL 源码编译了什么_Mysql 源码编译教程贴
题外话:这是一篇教程贴,不仅学的是mysql的编译,还是一些编译的知识.我也是一个菜鸟,写一些感悟和心得,有什么问题可以批评指正,谢谢! 如果只是为了安装请移到我的另一篇安装贴: Mysql安装贴 环 ...
- 全网首发:网易云信Duilib 源码编译教程以及可执行演示包下载
序言 Duilib介绍 Duilib是windows平台下的一款轻量级directUI开源库(遵循BSD协议),完全免费,可用于商业软件开发,只需在软件包里附上协议文件即可.Duilib可以简单方便地 ...
最新文章
- 杨强教授力荐,快速部署落地深度学习应用的实践手册
- ACdream1032(树形DP)
- 原生 AJAX的相关介绍
- windows常用命令netstat
- 递归-递归实现数字累加
- SpringBoot_数据访问-JDBC自动配置原理
- python读取文件夹下所有文件的名称_python2.7 学习之读取文件夹下所有文件名称及内容...
- 创建和管理CVSNT服务器的步骤
- SQL Server 2005 中行号的显示,分页
- LwIP协议栈之ARP(Address Resolution Protocal)协议详解
- 通过QXDM锁BAND
- 浅谈工业网络架构及安全
- 详解SOME/IP测试
- 2018秦皇岛ccpc赛后总结
- PostMan发送请求参数带有路径特殊字符会返回400错误(与URL字符及URL编码值有关)
- php入门-文件操作(文件包含、文件上传、文件管理)
- 数据采样 22382份,如何才能学好Python并找到工作
- 【崩坏学园2 不止】使用unity-studio提取并制作游戏内看板
- Data ONTAP Storage Management--Qtree
- ACM模块解析之 数论