osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)

 

版本:OSG3.4.0 

    OSGEarth2.8

     VS2015 

     64位

     win10

OSG和OSGEarth已编译版本(关注公众号回复:OSG),须要的可下载后配置环境变量:

1、编译OSG

一、安装包准备

(1)OSG:php

https://github.com/openscenegraph/OpenSceneGraph/tree/OpenSceneGraph-3.4.0html

(2)osg-2rdparty:git

https://ci.appveyor.com/api/projects/bjornblissing/osg-3rdparty-cmake/artifacts/v140-x64.zip?job=Environment%3A+Name%3Dv140-x64%2C+APPVEYOR_BUILD_WORKER_IMAGE%3DVisual+Studio+2015%2C+Generator%3DVisual+Studio+14+2015+Win64github

(3)数据包sql

http://www.openscenegraph.org/index.php/download-section/data编程

(4)CMake工具api

https://cmake.org/download/app

二、编译准备

在D盘创建一个OSG文件夹,并将步骤1下载的安装包按以下方式放置curl

D:\OSG\OpenSceneGraph:源码解压后放于此 
D:\OSG\3rdParty:第三方依赖库解压后放于此 
D:\OSG\data:数据包解压后放于此。工具

三、源码安装

(1)安装CMake工具并打开

(2)以下所示,填写源码路径和结果路径

(3)点击configure,并按照下图进行配置,而后点击Finish。

四、在红色列表中找到ACTUAL_3RDPARTY_DIR,并将其值设置为D:/OSG/3rdParty,找到BUILD_OSG_EXAMPLES值设置为ON,CMAKE_INSTALL_PREFIX,值为第一步中的结果路径。

 
五、点击Generate,自此建构完成。 

四、编译

(1)在D:/OSG/OSGbuild下,找到OpenSceneGraph.sln并打开,点击VS菜单栏选择 生成->批量生成 ,对All_BUILD进行生成,选择(Debug和Release两个版本),这段编译时间很长,大概 4-5个小时。若是前面步骤没有错误的话,这一步不会报错,只有警告。设置详情以下图所示: 

运行结果:

(2)、第1步完成后,再对INSTALL也进行相应生成编译。这段时间相应会短一点。

运行结果:

五、配置环境变量

(1)、添加系统变量:OSG_FILE_PATH,变量值为D:\OSG\data(与第二步中所建目录相对应)。 
(2)、在PATH变量中添加:D:\OSG\OSGbuild\bin。 
配置完成后,在命令行输入osgversion或osglogo进行测试。 

六、测试

(1)新建C++控制台项目。

(2)右键项目,选择“属性”,顶部平台选择x64,左侧配置属性选择“VC++目录”,在包含目录添加:结果目录中的include目录(D:\OSG\OSGbuild\include)。在库目录添加:结果目录中的lib目录(D:\OSG\OSGbuild\lib)。

(3)打开项目属性的连接器,选择“输入”,在附加依赖项添加: 

OpenThreadsd.lib 
osgd.lib 
osgDBd.lib 
osgUtild.lib 
osgGAd.lib 
osgViewerd.lib 
osgTextd.lib 

(4)新建cpp文件中输入如下代码:

#include "stdafx.h"
#include<osgViewer/Viewer>
#include<osgDB/ReadFile>

int main(int argc, char **argv)
{
    osgViewer::Viewer viewer;
    viewer.setSceneData(osgDB::readNodeFile("cow.osg"));
    return viewer.run();
}

测试结果:

 

注意:若是调试时显示计算机中丢失osg130-osgDBd.dll就重启电脑(对的 就是这样)

注:若是提示缺乏zlib.dll,这两个dll都可以在OSG依赖的第三方库3rdParty文件夹中能够找到,注意x86与x64选择,将这两个dll拷贝至OSG的bin目录(你加入环境变量path的路径)下便可,而后再测试

2、编译安装OSGEarth依赖项

一、编译Curl(本步骤能够略去)

(1)下载Curl-7.61.0并解压到D:\OSG\curl-7.61.0,在D:\OSG\curl-7.61.0文件夹下建立build目录。

下载连接:https://curl.haxx.se/download/curl-7.61.1.zip

(2)打开CMake,并按照以下进行设置

(3)点击configure,并按照下图进行设置,点击Finish。

(4)找到CMAKE_INSTALL_PREFIX,填入curl-7.61.0源代码路径D:\OSG\curl-7.61.0,再次configure后点击Generate,此时就会在build中生成curl.sln的编译工程。

(5)打开build中的curl.sln,点击菜单栏 生成->批生成,对All_BUILD进行生成,选择(Debug和Release两个版本)。

注:若提示“Cannot open include file: 'unistd.h': No such file or directory”

解决方案:https://blog.csdn.net/mangobar/article/details/6314700

(6)点击菜单栏 生成->批生成,对INSTALL也进行相应生成编译进行生成,选择(Debug和Release两个版本)。

(7)在build目录中搜索*.dll,*.lib,*.h文件,将libcurl.dll和libcurld.dll拷贝到D:\OSG\3rdParty\bin目录下,将libcurl.lib和libcurd.lib文件拷贝到D:\OSG\3rdParty\lib目录下,将*.h文件拷贝到D:\OSG\3rdParty\include\curl目录下。

二、编译GEOS

(1)下载GEOS:http://download.osgeo.org/geos/geos-3.5.1.tar.bz2,解压后放到D:\OSG\geos-3.5.1,建立build目录,经过CMake打开后进行configure。

(2)configure会报错,首先设置CMAKE_INSTALL-PREFIX定位到geos源码文件目录:D:\OSG\geos-3.5.1;

(3)而后打开连接https://trac.osgeo.org/geos/browser/trunk/cmake/modules

下载GenerateSourceGroups.cmake文件。

(4)将下载后的文件放到使用的cmake3.3.12中,我使用cmake的文件路径为D:\Program Files\CMake,则将刚才下载的文件拷贝到D:\Program Files\CMake\share\cmake-3.12\Modules文件下。而后点击configure,不报错了,点击generate,生成编译工程文件,而后打开vs2015工程文件,点击批生成,如图。

(5)在build目录中,将D:\OSG\geos-3.5.1\bin目录下文件拷贝到D:\OSG\3rdParty\bin目录下,将D:\OSG\geos-3.5.1\lib目录下文件拷贝到D:\OSG\3rdParty\lib目录下,将D:\OSG\geos-3.5.1\include\geos目录下文件文件拷贝到D:\OSG\3rdParty\include\geos目录下。

三、编译GDAL

(1)下载gdal下载地址:http://download.osgeo.org/gdal/2.2.1/gdal221.zip

2)修改编译文件

解压后的文件中应该有一个nmake.opt文件,在编译以前须要修改nmake.opt中的一些配置。

a、GDAL_HOME = “C:\warmerda\bld”,编译后的生成的头文件、静态库、动态库将会存储到这个路径。我在D盘新建了文件夹gdal2.21,而后修成了D:\gdal2.21。

b、”#WIN64=YES”,编译64位GDAL时,要删除前面的#。

c、 将

改成:

由于编译的时候会报错,修改以后就不编译ODBC,而后就用不了ODBC,不过关系不大。

 

(3) 编译

a. (以管理员的身份运行)进入VS2015 X64 本机工具命令提示符,在菜单栏的Visual Studio 2015文件夹下

b. 使用命令行,进入到源代码目录

c. 依次输入:

nmake -f makefile.vc

nmake /f makefile.vc install

nmake /f makefile.vc devinstal

第一个命令是编译GDAL

第二个、第三个命令是将生成的头文件、静态库、动态库复制到GDAL_HOME目录。若是须要编译debug模式,就将第一个命令改为nmake -fmakefile.vc DEBUG=1

注:若提示缺乏'xcopy',从C:\WINDOWS\system32文件夹下拷贝xcopy.exe到D:\Visual Studio2015\VC\bin目录下。

(4) 将D:\OSG\gdal-2.2.1\bin目录下文件拷贝到D:\OSG\3rdParty\bin目录下,将D:\OSG\gdal-2.2.1\lib目录下文件拷贝到D:\OSG\3rdParty\lib目录下,将D:\OSG\gdal-2.2.1\include目录下文件文件拷贝到D:\OSG\3rdParty\include\gdal目录下。

4. libzip

libzip(vs10)须要下载(http://pan.baidu.com/s/1o70sB6E 密码:n9l6),把解压后的头文件放到G:\OSGCore\Bulid\OpenSceneGraphic\3rdParty\include\libzip下,*.lib放到lib文件夹中,*.dll文件放到bin文件夹中。

5. zlip

直接使用3rdParty/lib下面的zlib.lib和zlibD.lib便可

6. 编译sqlite

1.首先下载两个压缩包:http://www.sqlite.org/download.html

https://www.sqlite.org/2018/sqlite-dll-win64-x64-3260000.zip

https://www.sqlite.org/2018/sqlite-amalgamation-3260000.zip

2.解压后,把sqlite-dll-win64-x64-3260000下的两个文件放到sqlite-amalgamation-3260000解压后的目录下,解压后文件夹重命名为sqlite3。组合成下面所示:

3.可按照下面连接中的方法进行编译:

https://www.cnblogs.com/baipengchao/p/5123346.html

4.按照连接中的方法生成debug 和release版本,分别命名为sqlite3d.lib|sqlite3d.dll,sqlite3.lib|sqlite3.dll

5.把sqlite3.lib 和sqlite3.dll拷贝到

D:\OSG\3rdParty\3rdParty\bin、D:\OSG\3rdParty\3rdParty\lib

3、编译安装OSGEarth

一、下载OSGEarth解压后建立build文件夹

下载连接:https://github.com/gwaldron/osgearth/archive/osgearth-2.9.zip

注:若是版本不合适,可在该连接下载其余版本进行尝试:https://github.com/gwaldron/osgearth/releases

 

 

二、与前面的方法类似,经过CMake编译生成sln

三、指定OSGDIr

四、指定3rdParty路径

五、依次对CURL;GDAL;GEOS;ZLIB进行处理,而后勾上Advanced,点击Configure

CURL:

GDAL:

GEOS:

 

六、编译OSGEarth

(1)进入D:\OSG\osgearth\build目录下,打开OSGEARTH.sln

(2)选择菜单栏“视图”—>其它窗口-->属性管理器,只需配置一个All_build的debug或Realse属性,全部的项目工程就都具备了相同的包含目录和库目录。设置ALL_BUILD的include 包含目录和库目录:

编译osgearth的过程当中,有几个项目须要设置include包含目录,主要有:

osgEarth

osgEarthAnnotation

osgEarthFeatures

osgEarthSymbology

osgEarthUtil

Pluginsosgearth_arcgis

Pluginsosgearth_feature_ogr

Pluginsosgearth_feature_tfs

Pluginsosgearth_feature_wfs

Sampleosgearth_featureinfo

三、环境变量设置及测试

软件部署(只是列出了debug,release于debug相同)

osgEarth软件包主要包括五个目录:bin,data,include,lib,src。

1. d:\OSGCore文件夹下创建一个文件夹path;d:\OSGCore\Path,在path下创建上述五个子目录,以下图所示:

2. 组织bin目录,bin主要包含dll和exe,以下表所示:

拷贝第一项:定位d:\OSGCore\Bulid\OpenSceneGraphic\bin,搜索*.dll和*.exe,拷贝到bin

拷贝第二项:定位d:\OSGCore\OSGEarth,,搜索*.dll,拷贝到bin

拷贝第三项:定位d:\OSGCore\OSGEarth,,搜索*.exe,拷贝到bin

拷贝第四项:定位d:\OSGCore\Bulid\OpenSceneGraphic\3rdParty,搜索*.dll,拷贝到bin

3. 组织data目录:

首先把d:\OSGCore\Bulid\OpenSceneGraphic\data下的全部拷贝到data

而后把d:\OSGCore\Bulid\osgearth-osgearth-2.8.0\data下的全部拷贝到data

首先把d:\OSGCore\Bulid\osgearth-osgearth-2.8.0\tests下的全部拷贝到data

4.组织include

首先把d:\OSGCore\Bulid\OpenSceneGraphic\include下的全部拷贝到include

而后把d:\OSGCore\Bulid\osgearth-osgearth-2.8.0\src下的全部拷贝到include,能够把该目录下的.cpp文件删除,保留.h头文件。

5.组织Lib和dll

拷贝第一项:定位d:\OSGCore\Bulid\OpenSceneGraphic\lib,搜索*.lib,拷贝到lib

拷贝第二项:定位d:\OSGCore\OSGEarth\x64\Debug,搜索*.lib,拷贝到lib

拷贝第三项:定位d:\OSGCore\Bulid\OpenSceneGraphic\3rdParty,搜索*.lib,拷贝到lib

把osg环境变量进行必定的修改:

OSG_FILE_PATH:d:\OSGCore\Path\data

PATH:d:\OSGCore\Path\bin

软件测试

打开cmd,输入 osgearth_viewer clouds.earth 观察会不会出现下面的图,出现即表示编译成功

欢迎关注个人公众号:

编程技术与生活(ID:hw_cchang)