Meshlab在 Windows下的编译

时间:2022-12-31 08:55:37

Meshlab在windows平台中的编译

1.QT
http://www.qtopia.org.cn/ftp/mirror/ftp.trolltech.com/qt/source/
下载qt-win-opensource-4.2.1-mingw.exe
及dev-cpp:
ftp://ftp.qtopia.org.cn/mirror/dev-cpp.sourceforge.net/devcpp-4.9.9.2_setup.exe
下载后,安装方法参见以下URL:
http://www.qtopia.org.cn/phpBB2/viewtopic.php?t=149
这样,你就拥有了跨平台的QT及G++,下面的编译meshlab的时候则要用到qt及devcpp里面的g++
当安装完QT后,到start=>Program=>QTv4.2.1(opensource)=>Qt4.2.1(Build Debug Libraries)
生成 debug版本的QT,要比较长的时间,将近一个小时在我机上。
环境设置:将d:/qt/4.2.1/bin目录加入到系统的path中,另外再设置一个
QMAKESPEC变量为win32-g++,这个只是用于简化下面你用qmake编译时简化输入的。

2.编译 Meshlab
  这里用meshlab最好是用纯的meshlab源码,我试了其他好像出错。
  Meshlab包括两部分,一部分是meshlabplugins,另一部分是meshlab.
  下载VCG,GLUT,LIB3DS并编译成lib3ds.a,这里我直接用了熊老师的
  已经编译成的版本。
  这些文件的下载可到http://218.192.174.108:8000/xyh/ 下载
  整个目录结构如下:
  D:/MESHLAB_V07
├─code
│  └─lib
│      ├─glew
│      │  ├─auto
│      │  │  ├─bin
│      │  │  ├─core
│      │  │  ├─extensions
│      │  │  ├─lib
│      │  │  │  └─OpenGL
│      │  │  └─src
│      │  ├─bin
│      │  ├─build
│      │  │  └─vc6
│      │  ├─config
│      │  ├─doc
│      │  ├─include
│      │  │  └─GL
│      │  ├─lib
│      │  └─src
│      ├─glut
│      │  └─LIB
│      └─lib3ds-1.2.0
│          ├─examples
│          ├─lib3ds
│          ├─msvc
│          │  └─Build
│          │      └─Debug
│          │          ├─2m
│          │          ├─2rib
│          │          ├─dll
│          │          ├─dump
│          │          ├─lib
│          │          └─player
│          └─tools
├─meshlab
│  ├─docs
│  ├─src
│  │  ├─install
│  │  ├─meshlab
│  │  │  ├─debug
│  │  │  ├─images
│  │  │  ├─plugins
│  │  │  ├─release
│  │  │  ├─shaders
│  │  │  ├─textures
│  │  │  └─ui
│  │  ├─meshlabplugins
│  │  │  ├─colladaio
│  │  │  ├─dummy
│  │  │  ├─meshcolorize
│  │  │  │  ├─debug
│  │  │  │  └─release
│  │  │  ├─meshdecorate
│  │  │  │  ├─debug
│  │  │  │  └─release
│  │  │  ├─meshedit
│  │  │  │  ├─debug
│  │  │  │  ├─images
│  │  │  │  └─release
│  │  │  ├─meshfilter
│  │  │  │  ├─debug
│  │  │  │  ├─release
│  │  │  │  └─ui
│  │  │  ├─meshio
│  │  │  │  ├─debug
│  │  │  │  └─release
│  │  │  ├─meshrender
│  │  │  │  ├─debug
│  │  │  │  └─release
│  │  │  └─meshselect
│  │  │      ├─debug
│  │  │      ├─images
│  │  │      └─release
│  │  ├─meshlabserver
│  │  ├─models
│  │  └─sample
│  └─tools
└─sf
    ├─apps
    │  ├─borland
    │  ├─gcc_make
    │  │  ├─metro
    │  │  ├─nexus
    │  │  ├─shadevis
    │  │  └─tri_decimator
    │  ├─metro
    │  ├─msvc
    │  │  ├─metro
    │  │  ├─nexus
    │  │  │  ├─crdview
    │  │  │  ├─nxsedit
    │  │  │  ├─nxsview
    │  │  │  ├─ply2crd
    │  │  │  └─voronoinxs
    │  │  ├─shadevis
    │  │  │  └─Debug
    │  │  ├─tridecimator
    │  │  │  └─Debug
    │  │  ├─trimeshinfo
    │  │  │  ├─Debug
    │  │  │  └─Mesh
    │  │  └─_UpgradeReport_Files
    │  ├─plyrefine
    │  ├─ptx2ply
    │  ├─sample
    │  │  ├─aabb_binary_tree
    │  │  ├─colorspace
    │  │  ├─edgemesh_grid
    │  │  ├─space_minimal
    │  │  ├─trimesh_base
    │  │  ├─trimesh_clustering
    │  │  ├─trimesh_intersection
    │  │  ├─trimesh_isosurface
    │  │  ├─trimesh_join
    │  │  ├─trimesh_optional
    │  │  ├─trimesh_refine
    │  │  ├─trimesh_SDL
    │  │  ├─trimesh_smooth
    │  │  └─trimesh_topology
    │  ├─shadevis
    │  ├─test
    │  │  ├─base
    │  │  ├─dataopt
    │  │  ├─extractors
    │  │  │  └─extractor
    │  │  ├─lem
    │  │  ├─tetramesh
    │  │  │  └─test
    │  │  ├─topology
    │  │  ├─trackball
    │  │  └─trimesh
    │  ├─tetraviewer
    │  ├─tetra_decimator
    │  │  └─tetra_decimator
    │  ├─tridecimator
    │  └─trimeshinfo
    │      ├─trimeshinfo1.00
    │      ├─trimeshinfo1.01
    │      │  ├─trimeshinfo101
    │      │  └─trimeshinfosample
    │      └─trimeshinfo1.02
    │          ├─trimeshinfo1.02
    │          └─trimeshinfosample
    ├─docs
    │  └─Doxygen
    │      └─img
    ├─sim
    ├─trimeshinfo121
    ├─vcg
    │  ├─complex
    │  │  ├─edgemesh
    │  │  │  └─update
    │  │  ├─local_optimization
    │  │  ├─tetramesh
    │  │  │  └─update
    │  │  ├─trimesh
    │  │  │  ├─create
    │  │  │  └─update
    │  │  └─vertexmesh
    │  │      └─update
    │  ├─container
    │  ├─math
    │  ├─simplex
    │  │  ├─edge
    │  │  │  └─with
    │  │  ├─face
    │  │  │  └─with
    │  │  ├─faceplus
    │  │  ├─tetrahedron
    │  │  │  └─with
    │  │  ├─vertex
    │  │  │  └─with
    │  │  └─vertexplus
    │  │      └─with
    │  └─space
    │      ├─index
    │      │  └─aabb_binary_tree
    │      └─intersection
    └─wrap
        ├─bmt
        ├─gl
        ├─gui
        ├─io_edgemesh
        ├─io_tetramesh
        ├─io_trimesh
        ├─math
        ├─mt
        ├─ply
        └─system
把目录放对也很主要,因为在源代码中头文件的写法已经对应好了位置,如果不放对,要改很多地方。
  先编译meshlabplugins:
      cd meshlabplugins
      先修改meshlabplugins.pro:
      在文件的最后加上CONFIG += embed_manifest_dll
      然后用
      qmake -spec win32-g++ -win32 -o Makefile meshlabplugins.pro
      产生了一个Makefile文件。
      因为之前已经设置了一个QMAKESPEC,故此处的-spec只需指定win32-g++,从其生成的Makefile中则
      可看出其会将这个变量扩展成你机上的绝对位置。
      此时,调入make来编译成meshlabplugins,这里用的make是devcpp中的make,故需之前将Dev-Cpp中的
      bin目录加入系统变量path中。
     
      修改一个文件clean.h:
      修改meshlab中的clean.h[/sf/vcg/complex/trimesh/clean.h] 文件下面399行的
          vector< FacePointer > ToDelVec;
     改为:       std::vector< FacePointer > ToDelVec;
      [这个我还不知道为什么修改,我直接用熊老师的sf 文件夹,再查出那个文件位置中确实改了]
      过了十多分钟之后,编译成功,虽然会有warning,但没有error就行。
   编译meshlab:
     cd meshlab
     先修改meshlab.pro:
     在文件的最后加上CONFIG += embed_manifest_exe
     cmd中输入:
     qmake -spec win32-g++ -win32 -o Makefile meshlab.pro
     产生一个Makefile文件。
     make
     编译,大约二十多分钟。
     
    完成,此时在meshlab中的debug目录中有 meshlab.exe文件,release目录中为空,拿一些模型测试一下
    是否meshlab.exe运行成功。

现在meshlabv0.8出来了,但是还没有试通。
再次谢谢熊老师的耐心指导。