编译open infrastructure platform
本文简单记录在visual studio 2015上编译open infrastructure platform的过程。虽然这个项目并没有什么知道的人(github上不超过5颗星。。),不过编译这样一个大项目好麻烦好多坑,收获是让我熟悉了cmake和visual studio的用法。
项目地址:https://github.com/tumcms/OpenInfraPlatform
step1:重装系统,安装visual studio 2015
对,我为了装它重装了win10系统。(以前是win7)
项目更新说自己支持vs2017编译了,然而我并不敢以身试毒。
注意:vs2015默认安装时不带c++以及window sdk,安装结束后自行更新c++编译环境和win10sdk哦。
step2:安装第三方依赖库
安装zlib, googletest, libLAS, qhull
作者最贴心的地方就是写好了安装这几个库的脚本!在工程里的external文件夹下。分别双击即可,安装结束后会自动把这几个包装在C:\thirdparty\vs2015\x64
安装qt-5.9.0
在 https://download.qt.io/archive/qt/5.9/5.9.0/ 中下载windows installer,然后安装。为了方便,把qt安装在C盘里,路径是C:\Qt\Qt5.9.0。注意在安装时注意在选择组件时记得在qt5.9下勾选msvc2015的选项!代表你要用vs编译qt。由于我也不知道应该选32位还是64位,就全都勾上了。
安装boost1.63.0
下载:https://sourceforge.net/projects/boost/files/boost-binaries/
安装:在C:\thirdparty\vs2015\x64\boost_1_63_0
安装eigen3.3.3
下载:http://bitbucket.org/eigen/eigen/get/3.3.3.tar.bz2
安装:直接解压到C:\thirdparty\vs2015\x64\Eigen_3.3.4
安装vld
下载:https://vld.codeplex.com/releases
安装:安装到你喜欢的地方
安装python3.5.2 x64
安装到你喜欢的地方
安装cmake3.10.0
版本不能太旧,安装到你喜欢的地方
安装oklabi
下载:http://www.okstra.de/oklabi/Release-20170327/Oklabi/Bibliothek/Windows/VS2015-Lib64.zip
解压到你喜欢的地方
安装blueframework
这是最大的坑,这是作者自己的另一个开源项目,传说中的安装包不知道哪去了,需要自己用cmake和vs编译。
因此又进入一次以上步骤。
- 下载工程:https://github.com/tumcms/BlueFramework
- 安装blueframework需要的第三方类库
同样在blueframework中的external文件夹里有脚本,把没有安装的安上。
- 打开cmake gui
where is the source code填上blueframework的位置
where to build the binaries填上一个你在blueframework上新建的文件夹
点击configure,选择visual studio 14 2015 win64,finish
看到出现一些红条,再点一次configure,红条消失
如果没有错误,点击generate
成功之后,用管理员模式打开vs2015,再打开blueframework。(因为编译会往C盘写入东西,需要管理员权限,否则会出现MSB3073的错误)
cmake的作用是根据源码,和你的系统环境,帮你生成适合你环境的工程配置。我们的情况就是生成了适合vs2015的.sln文件,这样就可以打开vs来编译这个项目啦。这里遇到任何问题,参见项目中的cmakelists文件。还有一篇文章说的不错https://github.com/tumcms/BlueFramework 讲cmake和vs指令的关系。
打开之后(需要等一会),先在1处选debug x64,在2处选中INSTALL项目,右键,生成;再在1处选release x64,在2处右键生成;最后在1处选relwithdebinfo x64,在2处右键生成。如下图
结束之后,blueframework的build文件夹下已经有很多东西啦。去看看C盘中也出现了C:\Program Files\BlueFramework,说明这个库已经安装好啦。
不过先不要太高兴,在C:\Program Files\BlueFramework\lib中现在只有.lib文件,但是我们还需要每个模块相关的.dll和.pdb文件。(cmake open infra platfrom时需要)从blueframework工程的build文件夹里都可以找到,考进来这些文件就可以了。
step3 下载prebuildlibs
在工程文件下的bootstrap文件夹里,F:\OpenInfraPlatform-master\bootstrap,有一个download_prebuild_libs脚本,运行它会下载6个G左右的prebuild libs…自动下载到工程下的prebuild_libs文件夹里。。下载很慢。。。
step4 cmake它
根据cmake blueframework的过程,现在你已经很有经验了。。根据刚才的步骤再来一遍即可。没有找到的路径,手工配一下,应该就可以了!
step5 用VS打开,编译它
把OpenInfraPlatform.UI设为启动项(右键,设为启动项),右键生成。
别急!编译不过哦!因为很坑的它缺了一些头文件。这些头文件是okstra的,然而这是个德国网站。。。根本看不懂在哪里下载啊!
一个一个试了一遍,终于找到了!!
http://www.okstra.de/oklabi/Release-20170327/Oklabi/Bibliothek/Kern-C++.zip
解压之后,把它们都include进去。方法是点击项目,属性进入属性页。在C/C++,常规,附加包含目录中把头文件所在的目录加进去即可。
参见:https://stackoverflow.com/questions/335408/where-does-visual-studio-look-for-c-header-files
ps. 在我的笔记本上编译一次需要大概半个小时。sigh..
step6 运行
直接运行会提醒你少一些dll文件,最傻的办法是直接拷贝过去就可以啦。一下是我拷进去的。红笔画出来的那个是不会提醒你,然而运行时会报奇怪的错误,特意标注出来。
到此,大功告成啦!