win10系统VS2015编译ifcplusplus

来源:互联网 发布:阿里云可以翻墙吗 编辑:程序博客网 时间:2024/05/29 11:06

简介

ifcplusplus是一个C++的class model,可以用来读写STEP格式的IFC文件。在ifcpp和OpenSceneGraph的基础上,simpleviewerexample项目用来展示IFC模型。因此,我们需要安装的库有boost, OSG(以及OSG依赖的第三方库)

编译步骤

安装OSG的第三方库

首先,感谢好心人为我们写了安装第三方库的指南
https://github.com/bjornblissing/osg-3rdparty-cmake

具体的做法参照readme中的INSTRUCTION,作者介绍的太详细了我就不在这里做翻译了。大意就是把底下链接里的那些库的源码都下载下来,打开cmake,填好源码的位置,build, generate, 在VS中打开工程,编译即可。

注意几点:
尽量就下载上面所说的版本,而不是最新的版本。(有些用新版没问题,有些用新版就会出错)
http://github.com/nmoinvaz/minizip 在github里现在的版本就会编译出错,记得滚回70e3fdad6021c38b5ecacda531df0802cd547bbf这个版本。

 git reset --hard 70e3fdad6021c38b5ecacda531df0802cd547bbf

编译安装OSG

从GITHUB上下载源码,再用CMAKE编译。
这里就是常规的使用cmakeGUI的,哪个库找不到手动填上再configure直到搞定就可以了。

这里只需要注意,用VS编译的时候用管理员身份,因为INSTALL会把OSG安装到C盘里。

安装OpenCascade

直接下载安装包安装即可。下载地址:(比较坑的是需要注册才可以下载)https://www.opencascade.com/sites/default/files/private/occt/OCC_7.2.0_release/opencascade-7.2.0-vc10-64.exe

安装CGAL

直接下载安装包安装即可。

编译IFCPP

下载源码,会发现源码中有.sln文件。这个大工程里有三个小工程,其中ifcplusplus依赖于carve,simpleviewerexample依赖于carve & ifcplusplus。教程里说用VS2013,我用的是VS2015也并没有出问题。但是导入工程之后注意以下几点:

  • 设置环境变量
    按照github里的windows安装指南来设置。也就是要配好OSG在哪,BOOST在哪,CGAL在哪,QT在哪,wix toolset我也下载了。不知道为什么我执行这个脚本环境变量并没有改变,所以我打开计算机属性一个一个输入的…
set OSG_DIR=C:\Program Files\OpenSceneGraphset OSG_LIBRARY_PATH=%OSG_DIR%\binset OSG_PLUGINS_LIB=%OSG_DIR%\lib\osgPlugins-3.4.1set OSG_FILE_PATH=C:\Program Files\OpenSceneGraph\OpenSceneGraph-Data;C:\Program Files\OpenSceneGraph\OpenSceneGraph-Data\Images;C:\Program Files\OpenSceneGraph\OpenSceneGraph-Data\fonts;set BOOST_DIR=C:\thirdparty\vs2015\x64\boost_1_63_0set CGAL_DIR=G:\CGAL-4.11\auxiliary\gmp\libset QMAKESPEC=win32-msvc2015set QMAKE_TARGET.arch=x86_64set QTDIR=C:\Qt\Qt5.9.0\5.9\msvc2015_64PATH=%OSG_DIR%\bin;%PATH%PATH=%OSG_PLUGINS_LIB%;%PATH%PATH=%QTDIR%\bin;%PATH%PATH=%CGAL_DIR%\bin;%PATH%PATH=C:\Program Files (x86)\WiX Toolset v3.8\bin;%PATH%
  • 找不到v141工具集。
    由于我用的是VS2015, 配置的工具集是v140, 打开carve, ifcplusplus, simpleviewerexample 三个文件夹,分别编辑.vcxproj文件,把里面的v141全部修改成v140

  • windows SDK版本不对
    只需要右键每个工程,选择重定SDK版本目标,选择你现在拥有的SDK版本即可

  • MSB6006 cmd.exe exit with code 3
    感谢知乎的回答!下载QT在vs2015上的插件,安装。下载地址:https://download.qt.io/official_releases/vsaddin/qt-vs-tools-msvc2015-2.1.1.vsix
    然后右键simpleviewerexample,点击convert project to QT VS Tool project。

  • 最多的错误当然是各种找不到:找不到.lib, 找不到.h
    其实这个很简单。一个项目要依赖其他的库时,需要配置的地方有三个:
    1)头文件在哪,就是程序开头include的那些.h文件去哪里找
    项目->属性->C/C++->常规->附加包含目录 所有你在程序里include的头文件的寻找路径都需要放进来,否则就会找不到。在路径里面,一般会有一些$(BOOST_DIR)这种变量,这些就是设置在环境变量里后VS就可以找到了。设置完环境变量最好重启下VS。

2).lib文件在哪
项目->属性->链接器->常规->附加库目录 所有你程序中用到的.lib文件都需要在这里找到

3)需要的.lib文件有哪些
项目->属性->链接器->输入->附加依赖项 把你要用的.lib填写在这里

解决问题的方法就是,在项目属性里看,路径对不对全不全,对不对(去那个文件夹看看是不是有你要的文件)缺什么补什么即可(哪里补:你总知道你的依赖库安装在哪里吧??)

在解决了以上各种问题之后

你应该可以编译成功了!

运行

去双击simpleviewerexample.exe,提醒你找不到各种dll。缺什么就吧什么拷贝到当前目录下面就可以啦。

下载一个ifc文件,导入试试把!

分割线:
下面是我的一段失败经历,不过也学到很多,就不删除了

=========================================

(windows下不是用cmake啊宝宝,build instruction上写了哦)

下载源码,打开cmake
主要填的是BOOST和OSG和QT的安装位置
这里写图片描述

这里写图片描述

这里写图片描述

打开,用VS编译ALL_BUILD,编译相当慢,至少需要一个小时。一共5个项目,会发现simpleviewerexample编译失败,一共500多个错误,错误基本都在ofstream里。这是因为OSG中的fstream和std的fstream重名导致的问题。修改SimpleViewerExample的项目属性,配置属性->C/C++->常规->附加包含目录,再最上面添加 C:\Program Files %28x86%29\Microsoft Visual Studio 14.0\VC\include(也就是std中fstream.h的位置)。因为include的顺序对编译是有影响的,所以要放在最上面。放好之后,错误的文件加上#include 就可以了。

设置编译选项:/bigobj
(配置属性->C/C++->命令行->其他属性)填写上/bigobj

然后,,,不再报错了,但是永远停不下来了……一直在生成代码,遂放弃!

原创粉丝点击