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

 

版本:OSG3.4.0 

    OSGEarth2.8

     VS2015 

     64位

     win10

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

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第1张图片

一、编译OSG

1、安装包准备

(1)OSG:

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

(2)osg-2rdparty:

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+Win64

(3)数据包

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

(4)CMake工具

https://cmake.org/download/

2、编译准备

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

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

3、源码安装

(1)安装CMake工具并打开

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

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第2张图片

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

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第3张图片

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

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第4张图片

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第5张图片 
5、点击Generate,自此建构完成。 

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第6张图片

4、编译

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

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第7张图片

运行结果:

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第8张图片

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

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第9张图片

运行结果:

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第10张图片

5、配置环境变量

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

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第11张图片

6、测试

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

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

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第12张图片

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

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第13张图片

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

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

#include "stdafx.h"
#include
#include

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

测试结果:

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第14张图片

 

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

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

二、编译安装OSGEarth依赖项

1、编译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,并按照如下进行设置

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第15张图片

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

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第16张图片

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

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第17张图片

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第18张图片

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

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第19张图片

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第20张图片

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

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

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

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第21张图片

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第22张图片

(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目录下。

2、编译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;

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第23张图片

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

下载GenerateSourceGroups.cmake文件。

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第24张图片

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

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第25张图片

(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目录下。

3、编译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、 将

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第26张图片

改为:

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第27张图片

因为编译的时候会报错,修改之后就不编译ODBC,然后就用不了ODBC,不过关系不大。

 

(3) 编译

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

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第28张图片

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。组合成下面所示:

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第29张图片

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

三、编译安装OSGEarth

1、下载OSGEarth解压后创建build文件夹

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

注:如果版本不合适,可在该链接下载其他版本进行尝试:https://github.com/gwaldron/osgearth/releases

 

 

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第30张图片

2、与前面的方法相似,通过CMake编译生成sln

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第31张图片

3、指定OSGDIr

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第32张图片

4、指定3rdParty路径

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第33张图片

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

CURL:

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第34张图片

GDAL:

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第35张图片

GEOS:

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第36张图片

 

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第37张图片

6、编译OSGEarth

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

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

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第38张图片

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第39张图片

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

osgEarth

osgEarthAnnotation

osgEarthFeatures

osgEarthSymbology

osgEarthUtil

Pluginsosgearth_arcgis

Pluginsosgearth_feature_ogr

Pluginsosgearth_feature_tfs

Pluginsosgearth_feature_wfs

Sampleosgearth_featureinfo

3、环境变量设置及测试

软件部署(只是列出了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 观察会不会出现下面的图,出现即表示编译成功

osgEarth教程(一)——编译配置(osgEarth+VS2015+win10)_第40张图片

欢迎关注我的公众号:

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

 

你可能感兴趣的:(OSG)