VS2013+Win10+osgEarth2.9+osg3.4.0编译

现在来记录一下这次编译结果和编译需要注意的地方,以供之后查阅和大家学习。

在分享之前首先要给没有编过的同学们说不要怕编译osg,其实它并不复杂。

我的编译环境是VS2013,64位系统,QT用的是5.3.0. 如果你的电脑是新安装的VS2013,建议先去microsoft官网下载MultibyteMFC library for VS2013。否则在编译过程中会出现找不到mfc****.lib的错误。

一. 编译osg3.4.0

我在E盘下新建OSG文件用于放置源文件和编译结果。

即E:\OSG路径下为:


(这里的3rdparty是我自己建的文件夹,里面只放了x64的数据)

然后打开CMAKE界面,把E:\OSG\OpenSceneGraph-3.4.0中的CMakeLists.txt拖进去,在E:\OSG\OpenSceneGraph-3.4.0中新建文件夹build.


CMAKE中是这样的:


通常来说CMAKE会自己去寻找对应的lib和include路径,一般不需要修改。我这里记录一下会遇到问题:

1. 在Configure的时候什么都还没开始就在最前面出现一大片红色的错误,具体忘了,只记得里面有OCD这样的字样,这个错误一般是CMAKE版本用的太高了,可以尝试用低版本的来。

2.在Configure是时开头没报错,中间报错了。具体是:D

CMake Error at D:/Qt/Qt5.2.1/5.2.1/msvc2012_64_opengl/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:16 (message):

Failed to find "glu32" in "" with CMAKE_CXX_LIBRARY_ARCHITECTURE "".

解决办法是在你先用everything查找glu32.lib这个文件,一般有32位和64位的版本,自己要用哪个就选择哪个路径。然后在刚刚用到的那个CmakeList.txt开头加入一行set(CMAKE_LIBRARY_PATH "C:/Program Files (x86)/Windows Kits/8.1/Lib/winv6.3/um/x64") 后面的路径写你本机上的路径。


这样一般就是没有问题了。

3. 但是一般还会出现warning这样的错误,我记得我出现了三个,好像是找不到gdal、curl的debug的版本。我的解决方法是将它提示的地方分别修改成它所建议使用的lib.

这样就基本上没有红色了,点击Generate.

然后就是一般的进行编译了。一般不会有什么错。

编完了之后配置,我的做法是在D盘新建一个OSG文件夹。然后把build中bin、include、lib文件夹拷贝过去,再将源码中带的include文件夹以合并文件夹的方式拷贝过去。   最后在D:/OSG中新建一个data文件夹,把OpenSceneGraph-Data-3.4.0文件夹中的数据拷贝过去。

接下来就可以设置环境变量了。在系统环境变量中新建OSG_FILE_PATH,路径为D:/OSG/data ;在PATH中新增3rdparty所在路径的bin目录和D:/OSG/bin


这样就可以运行osgviewer cow.osg来测试了。


二. 编译osgEarth

编译这个首先会有一些准备工作,先要编译好osg, sqlite, geos.

刚刚已经编译好了osg,那么现在来编译sqlite.

具体的编译步骤在我的另外一篇博客中提到了:https://blog.csdn.net/scarlett_ohara/article/details/78062801

编译好了之后将sqlite3.lib和sqlite3.dll拷贝到你的3rdparty目录中的bin和lib文件夹下。

然后来编译geos.这里我主要参照了另外一篇博客,(先截图下来,在文末会标明出处)




弄完了这个就可以用CMAKE进行编译了。主要注意的地方有:

1. OSG_DIR:这个写你的集成好的OSG,像我这样就是D:/OSG

2.THIRD_PARTY_DIR:这个写你3rdparty所在目录

其他的都应该是写好了。

那么就可以静静地开始编译了。编译时要主要的是要比编译osg3.4.0多一个步骤,就是工程需要包含目录:


1)osgEarthFeatures

2)osgEarthSymbology

3)osgEarthUtil

4)Plugins osgearth_arcgis

5)  Plugins osgearth_feature_ogr

6)  Plugins osgearth_feature_tfs

7)  Plugins osgearth_feature_wfs

8)  Sample osgearth_featureinfo

这几个工程需要的包含目录是你3rdparty中include文件夹的位置。

在编译过程中这几个文档给我的帮助很大:https://blog.csdn.net/qq_34874034/article/details/78630538?locationNum=7&fps=1

这个文档也提出了很多错误的解决方法:https://blog.csdn.net/liuhailong2014/rss/list