Meshlab源码编译 VS2013+QT5.8.0
有了前面的配置基础
接下来我们来编译源码
------------------------------------------------------------------------------------------------------------------------
1 下载meshlab源码。我以“meshlab_32bit v_1.3.3”为例,利用它的源代码“MeshLabSrc_AllInc_v133.tgz”详细给出编译过程。
链接:https://pan.baidu.com/s/1q6rIzjIJ69A8mVE_QKvpYA 密码:jwh9
2 设置环境变量,控制面板-系统-高级系统设置中的“环境变量”,在用户变量处新建一个用户变量QT,填入安装目录,然后在path后面添加到bin(C:\Qt\Qt5.8.0\5.8\msvc2013_64\bin)如下面对话框。 重启后有效。
3 打开VS2013点击“Open Qt Project File(.pro)”(图1),选中“G:\point\MeshLabSrc_AllInc_v133\meshlab\src\common”下的common.pro,进入工程common的属性页,将“配置属性-常规-属性默认值”下的“配置类型”改为“静态库(.lib)”。meshlab的其他工程需要common.lib。再生成工程common,在“G:\point\MeshLabSrc_AllInc_v133\meshlab\src\common\Debug”下会有common.lib文件(图2),将其复制到“G:\point\MeshLabSrc_AllInc_v133\meshlab\src\distrib”。
进入工程“common”的属性页,选中“链接器-常规”,在附加库目录中加入“G:\point\MeshLabSrc_AllInc_v133\meshlab\src\distrib”,再选中“链接器-命令行”,键入/SAFESEH:NO。点击“应用”(图3)。
图1
图2
图3
生成工程的时候会报错
图4
解决方法:右键属性—》链接器—》输入—》附加依赖项,在最后加上glu32.lib
和opengl32.lib
,这里不区分大小写!
图5
运行完这个,关闭VS2013,重新打开。
4 重新打开VS依次打开工程:“G:\point\MeshLabSrc_AllInc_v133\meshlab\src\external\external.pro”(要先把这个里面的每一个项目都生成解决方案以成功以后才可以分别再打开后面的每一个pro文件,不然会出问题),“G:\point\MeshLabSrc_AllInc_v133\meshlab\src\common\common.pro”,“G:\point\MeshLabSrc_AllInc_v133\meshlab\src\meshlab\meshalb.pro”,“G:\point\MeshLabSrc_AllInc_v133\meshlab\src\meshlabplugins\io_base\io_base.pro”,“G:\point\MeshLabSrc_AllInc_v133\meshlab\src\meshlabplugins\filter_meshing\filter_meshing.pro”。全部打开如图6,再将工程meshlab设为启动项 ,则meshlab名称会变黑,如图7。
图6 图7
打开“G:\point\MeshLabSrc_AllInc_v133\meshlab\src\external”下的external.pro,会看到如图8的七个项目,分别要生成解决方案。生成工程的每个工程都会有其各自的lib,将它们都复制到“G:\point\MeshLabSrc_AllInc_v133\meshlab\src\distrib”。例如jhead,会在“G:\point\MeshLabSrc_AllInc_v133\meshlab\src\external\jhead-2.95\debug”下有“jhead.lib”。
进入工程“openctm”的属性页,选中“C/C++ - 预处理器”,在预处理器定义中添加一项:OPENCTM_BUILD ,如图9
图8
图9
5 进入工程“common”的属性页,选中“链接器-常规”,在附加库目录中加入“G:\point\MeshLabSrc_AllInc_v133\meshlab\src\distrib”,再选中“链接器-命令行”,键入/SAFESEH:NO。点击“应用”。
进入工程“filter_meshing”属性页,选中“链接器-常规”,在附加库目录中加入“G:\point\MeshLabSrc_AllInc_v133\meshlab\src\distrib”,再选中“链接器-命令行”,键入/SAFESEH:NO和common.lib。点击“应用”。
进入工程“io_base”属性页,选中“链接器-常规”,在附加库目录中加入“G:\point\MeshLabSrc_AllInc_v133\meshlab\src\distrib”,再选中“链接器-命令行”,键入/SAFESEH:NO和common.lib。点击“应用”。
进入工程“meshlab”属性页,选中“链接器-常规”,在附加库目录中加入“G:\point\MeshLabSrc_AllInc_v133\meshlab\src\distrib”,再选中“链接器-命令行”,键入/SAFESEH:NO 、jhead.lib和common.lib。点击“应用”。
并将项目依赖项都打勾。如图10
图10
配置所有程序的时候,如果出现错误,在附加依赖项,在最后加上glu32.lib
和opengl32.lib。
这样就完成了meshlab的基础部分的配置,下面生成meshlab,可以在G:\point\MeshLabSrc_AllInc_v133\meshlab\src\distrib看到一个,打开如下图: