目录

前言

编译准备

编译配置

1. 源码下载

2. 路径配置

3. 命令行编译

4. 报错解决

结语


前言

MeshLab是三维立体网格处理软件,为自由软件,首先发布于2005年年底。此软件可显示及处理大量的非结构化网格,并提供编辑、清理、修复及查核等功能,可对模型进行渲染及转换,

(以上内容来自维基百科)

最近工作中需要用到 MeshLab 中的某个功能,就编译源码研究了一下,本文简单说一下编译教程。

编译准备

本文所用编译工具及编译环境如下:

  1. Windows 10 21H2 x64,Windows SDK 19041
  2. Git 2.36.0
  3. CMake 3.25.1
  4. Qt 5.15.2
  5. 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”。

  1. 切换路径至编译路径 “cd /d G:/meshlab/build”
  2. 使用 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 盘。
    配置完成后回车编译即可,在执行过程中,会下载上文中所提到的缺失的库,等待配置完成即可。

  3. 在编译路径会生成 MeshLab 解决方案,使用 VS 2019 打开 MeshLab.sln,编译选项改为 “Release x64”,直接生成 “ALL_BUILD” 即可,等待编译完成,生成 “INSTALL” 安装。

4. 报错解决

  1. 常量中有换行符
    项目 “meshlab”、“edit_align”、“edit_pickpoints” 三个项目会报该错误,代码中有 Unicode 字符造成的,在三个项目中分别 “右键 -> 属性 -> 配置属性 -> C/C++ -> 命令行”,在其他选项的输入框中最后加上 “/utf-8” 即可。
  2. 运行 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 源码编译教程相关推荐

  1. 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: ...

  2. Spring 6 源码编译教程分享~

    前言:Spring Boot 3 RELEASE版本于 2022年11月24日 正式发布,此次Spring Boot里程碑的升级也要求了最低JDK 17 和 Spring Framework 6 ,其 ...

  3. tensorflow源码编译教程_源码编译安装tensorflow 1.8

    参考官方指南 基本要求 官网测试过的源代码配置如下: image 也就是说,按照这个版本安装的话不应该再产生版本的问题了. 我的配置 ubuntu 16 python 2.7 nccl 2.3 gcc ...

  4. SQLite源码编译教程

    SQLite源码编译安装 SQLite简介 编译安装 源码下载 编译过程 demo实例 总结 SQLite简介 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用M ...

  5. 最好用的Redis Desktop Manager 0.9.3 版本下载 以及源码编译教程

    文章目录 一.前言 二.编译教程 2.1 [redis destop manager 的源码地址](https://github.com/uglide/RedisDesktopManager) 2.2 ...

  6. 可视化工具VisIt源码编译教程(Windows,图文讲解)

    我新建了一个VisIt软件的交流qq群:1169585995,欢迎大家加入一起交流,一起学习! 所用软件及其版本 用于源码编译的软件及版本如下: Windows版本:win10 VisIt版本:vis ...

  7. orangepi升级linux内核,orangePi源码编译教程

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? #环境 ubuntu 12.04.5 64位 8G内存 jdk-6u45-linux-x64.bin 64位JDK6 板 ...

  8. 怎么查看MySQL 源码编译了什么_Mysql 源码编译教程贴

    题外话:这是一篇教程贴,不仅学的是mysql的编译,还是一些编译的知识.我也是一个菜鸟,写一些感悟和心得,有什么问题可以批评指正,谢谢! 如果只是为了安装请移到我的另一篇安装贴: Mysql安装贴 环 ...

  9. 全网首发:网易云信Duilib 源码编译教程以及可执行演示包下载

    序言 Duilib介绍 Duilib是windows平台下的一款轻量级directUI开源库(遵循BSD协议),完全免费,可用于商业软件开发,只需在软件包里附上协议文件即可.Duilib可以简单方便地 ...

最新文章

  1. 杨强教授力荐,快速部署落地深度学习应用的实践手册
  2. ACdream1032(树形DP)
  3. 原生 AJAX的相关介绍
  4. windows常用命令netstat
  5. 递归-递归实现数字累加
  6. SpringBoot_数据访问-JDBC自动配置原理
  7. python读取文件夹下所有文件的名称_python2.7 学习之读取文件夹下所有文件名称及内容...
  8. 创建和管理CVSNT服务器的步骤
  9. SQL Server 2005 中行号的显示,分页
  10. LwIP协议栈之ARP(Address Resolution Protocal)协议详解
  11. 通过QXDM锁BAND
  12. 浅谈工业网络架构及安全
  13. 详解SOME/IP测试
  14. 2018秦皇岛ccpc赛后总结
  15. PostMan发送请求参数带有路径特殊字符会返回400错误(与URL字符及URL编码值有关)
  16. php入门-文件操作(文件包含、文件上传、文件管理)
  17. 数据采样 22382份,如何才能学好Python并找到工作
  18. 【崩坏学园2 不止】使用unity-studio提取并制作游戏内看板
  19. Data ONTAP Storage Management--Qtree
  20. ACM模块解析之 数论

热门文章

  1. 安装虚拟机 vmware
  2. 学习人工智能需要哪些必备的数学基础?
  3. 以色列量子计算软件公司,与欧洲机构合作开发薛定谔猫状态纠错技术
  4. oracle audit_actions,配置Oracle安全审计选项audit
  5. python--Django 01 安装以及初识Django项目开发
  6. 多线程(之五:线程协作)
  7. 英语新闻app——TagLayout+ViewPager+Fragment实现分类切页功能
  8. Tcp连接时三次握手的问题和思考
  9. 与Zeynep Tufekci讨论社交媒体驱动的抗议的未来
  10. c++(最大公约数)