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出来了,但是还没有试通。
再次谢谢熊老师的耐心指导。