超级详细的osgearth2.10+vs2015+osg3.6.4+OsgQt+gdal3.0.1+geos3.7.2+proj6.2+OSGOcean

公司自己的项目,打算用最新的2.10osgearth,所以折腾一波。。。。。。
前期各种库可直接编译两种,完了osg 直接编译debug release省时间

编译前的准备:

  1. widow7
  2. cmake-3.15.4
  3. vs2015
  4. osg3.6.4
  5. osg-3rdparty(第三方依赖库)
  6. osgearth2.10
  7. gdal3.0.1
  8. proj6.2.0
  9. sqlite3.30
  10. geos3.7.2
  11. OsgQt

第一步 编译gdal3.0.1+proj6.2.0+geos3.7.2+sqlite3.30**

1. 静态编译SQLite库。

因为gdal3.0.1版本必须依赖geos库和sqlite,所以首先得把sqlite库编译完成。到官网下载源码sqlite-amalgamation-3300100.zip和windows运行时的预编译二进制文件sqlite-dll-win64-x64-3300100.zip

创建新的静态库工程,把上面下载的文件解压加入到新空项目:

(1)将sqlite3.c、sqlite3.h、sqlite3ext.h、sqlite3.def四个文件添加到工程中,目录结构如下:

在这里插入图片描述

(2)预处理设置:C/C++ --> 预处理器 --> 预处理器定义:设置预定义处理
_USRDLL
SQLITE_ENABLE_RTREE
SQLITE_ENABLE_COLUMN_METADATA
SQLITE_ENABLE_FTS5
SQLITE_ENABLE_UNLOCK_NOTIFY 

在这里插入图片描述

(3)设置模块定义文件,链接器 --> 输入 --> 模块定义文件:sqlite3.def
(4)修改模块定义文件:在最后追加sqlite3_unlock_notify在这里插入图片描述
(5)配置类型改为静态库lib

在这里插入图片描述

(6)最后生成解决方案(需要生成debug版时,选择debug,这里以release版为例)

x64\Release文件夹可以看到SQLite3.lib静态库和SQLite3.exe。在SQLite目录中分别创建include和lib和bin文件夹,将刚才生成的.lib文件放入lib文件夹中,将sqlite3.h、sqlite3ext.h放入include中,将sqlite-tools-win32-x86-3280000.zip中的sqlite3.exe放在bin文件夹中以备后用。

2.编译proj
(1)解压文件,放到以下目录中C:\Users\Administrator\Desktop\mypro\proj-6.2.0
(2)打开cmake进入到源码目录:

在这里插入图片描述

(3)点击Configure,编译64位,vs2015.然后配置好以下路径:在这里插入图片描述

在这里插入图片描述
cmake_install_prefix路径是生成后的库文件都会放在此目录下。然后再次点击configure,无错误后点击generate,也无错误后点击open project,就会打开工程文件,选择需要编译的版本进行编译(debug或release),编译完成后再编译INSTALL就会在刚刚上面配置的cmake_install_prefix的路径下找到库文件了。
在这里插入图片描述

3.编译GEOS

Geos目前新的版本是3.7.2,使用VS进行编译(这个如果是编译osgearth2.8的话要使用geos3.5.0,要不然不同版本会出现问题)。
环境VS2015+CMake3.15.6

cd C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64 (vcvars64的目录)
vcvars64
cd 到geos目录下
autogen.bat
nmake /f makefile.vc
nmake /f makefile.vc install
nmake /f makefile.vc devinstall

DEBUG版本

cd C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64 (vcvars64的目录)
vcvars64
cd 到geos目录下
autogen.bat
nmake /f makefile.vc DEBUG=1
nmake /f makefile.vc install
nmake /f makefile.vc devinstall

geos 3.5.0
修改配置文件nake.opt
这个配置是debug 还是release不修改就会出现debug用release的lib编译后续出现问题
在这里插入图片描述
x64 ,64位还是32位自己发挥
在这里插入图片描述
根据自己编译器的版本号添加,下边是我的
在这里插入图片描述

4.编译GDAL
gdal3.0.1
(1)把压缩包解压到
		 E:\mypro
(2)进入文件夹找到nmake.opt文件,打开。

第41行左右,找到MSVC_VER=设置为1900(VS2015版本应该为1900及以上,视自己编译器而定)。

第57行左右找到GDAL_HOME =将生成文件的路径设置成你想要的位置。

第194行左右找到WIN64=YES,如果生成64位版本取消注释本行。

第218行左右找到DLLBUILD=设置为1启动动态编译、 0为静态编译。这里一定一定要是动态编译!因为osg依赖于动态生成的gdal_i.lib,静态编译生成的好像没有带i结尾的库,这也是我最后编完之后但是无法使用osg或osgearth调用gdal的原因,因为一开始我编译的是静态的。

第238行左右,找到PROJ_INCLUDE PROJ_LIBRARY,分别设置成你刚才生成PROJ时的include和lib文件夹(其中PROJ_INCLUDE的-I后为地址),并将.lib的名称改对。

第613行左右,找到GEOS_DIR,分别设置成你刚才生成GEOS时的include和lib文件夹,并将.lib的名称改对。

第509行左右,找到SQLITE_INC SQLITE_LIB,路径设置同上。至此设置完成,保存文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)执行release编译,打开

vs x64 命令行

进入到源码文件夹,输入以下命令进行release版本编译,如果要进行debug版本就在下面命令makefile.vc后面加上DEBUG=1。

(如:nmake /f makefile.vc DEBUG=1)
nmake /f makefile.vc
nmake /f makefile.vc install
nmake /f makefile.vc devinstall

遇到的问题
win7 VS2015编译GDAL 正在创建库 gdal_i.lib 和对象 gdal_i.exp时候报错:LINK : error LNK2001: 无法解析的外部符号 _OSRValidate

5. 编译osg
(1)数据准备

OpenSceneGraph-3.6.4,OSG的源码包。
osg-3rdparty-cmake-master.zip,源码包依赖的第三方库。
OpenSceneGraph-Data-3.4.0.zip,自带的一些数据资源文件。
在这里插入图片描述

(2)osg-3rdparty(第三方依赖库)

蛋碎一地,只有2015没有预建包。。。自己cmake了只能。。。。
下载
在VS2015下官方并没有提供编译好的包,只能自己编译,这一步如果有已经编译好的第三方库则可以跳过。建议没库编译经验的同学用其他VS版本跳过这一步,或者找已经编译好的版本(本文最后提供已经编译好的版本)。
解压下载好的第三方库包osg-3rdparty-cmake-master,就会发现里面有个download_dependencies.bat,用记事本打开:
在这里插入图片描述
也就是说第三方库源代码需要通过这个批处理文件来获取,最后会下载到C:\3rdparty这个文件夹(不想下载可以从本文最后处地址获取)。里面有三个cmd不识别的命令:git、curl以及7z。

Git:

可以参考《Git安装教程(windows)》来安装git;

CURL:

下载curl
下载后设置curl.exe所在目录的环境变量
然后cmd中测试

curl --help
7z:

可以安装7-Zip
下载后设置curl.exe所在目录的环境变量
然后cmd中测试

都安装好以后,将download_dependencies.bat加载cmd里面运行,等待下载完成就可以了,注意在cmd里面检查批处理命令的输出结果。
下载完成以后,打开cmake,填入source目录以及build目录,点击configure,选择VS2015-64位编译器,configure完成后,按照如下配置进行再次configure,直到没有红色高亮显示
在这里插入图片描述
点击Generate生成VS工程,用VS2015打开,生成解决方案,等待编译完成就可以了。编译完成后单独生成INSTALL工程,编译结果就会自动安装到CMAKE_INSTALL_PREFIX设置的文件夹。

(3) CURL 编译

编译之前要编译好zlib 和openssl
CURL下载
使用vs2015命令行
debug

nmake /f Makefile.vc mode=dll vc=12 MACHINE=x64 WITH_SSL=dll DEBUG=yes WITH_ZLIB=dll SSL_PATH=E:\OpenSSL-Win64 ZLIB_PATH=E:\mypro\release\3rdParty

release

nmake /f Makefile.vc mode=dll vc=12 MACHINE=x64 WITH_SSL=dll DEBUG=no WITH_ZLIB=dll SSL_PATH=E:\OpenSSL-Win64 ZLIB_PATH=E:\mypro\release\3rdParty

中途可能确实openssl的相关依赖,可以选择编译或者使用编译好的包

(4) OSG 3.6.4

解压源码包,文件夹重命名为OpenSceneGraph-3.6.3。启动cmake,填入源代码路径和编译路径,点击Configure,界面就会出现一些编译选项。

全部像上面配置完(gdal库一定要像白线那样配置为gdal_i.lib)之后再次点击configure,无错,点击generate,最后open project之后像编译proj4那样build和install完之后就可以在刚刚配置的路径找到库文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
全部像上面配置完(gdal库一定要像白线那样配置为gdal_i.lib)之后再次点击configure,无错,点击generate,最后open project之后像编译proj4那样build和install完之后就可以在刚刚配置的路径找到库文件。
生成目录下的bin,还有Lib文件,我生成的时候找不到osgPlugins-3.4.1这个lib文件夹,如果没有找一下吧

6. OSGEarth 2.10

基本跟OSG差不多,解压然后用Cmake进行编译
设置相关路径,2.10去掉了osgEarthQt模块所以要重新编译。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里GEOS我是编译路径设置错了,所以后续修正了,白色的在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
osgEarthSilverLining、osgEarthTriton编译
这个提前下载sundog官网的sdk安装选择路径即可
在这里插入图片描述

osgEarthQt编译

2.10删除了osgEarthQt模块因此要自己编译
osgearth/src/osgEarthQt/CMakeList.txt 需要对照旧版本的更改(我是直接暴力粘贴过去)
https://github.com/gwaldron/osgearth/blob/2.8/src/osgEarthQt/CMakeLists.txt
osgearth/src/CMakeList.txt需要对照旧版本的更改(这个就是增加osgEarthQt的lib)
https://github.com/gwaldron/osgearth/blob/2.8/src/CMakeLists.txt
CMakeModules文件夹文件FindOsgEarth.cmake 文件增加下面的配置

FIND_OSG_LIBRARY( OSGQT_LIBRARY osgQt )
FIND_OSG_LIBRARY( OSGQT_LIBRARY_DEBUG osgQtd )

然后勾选项目选项
打开文件进行正常编译即可,缺失的自动补全

7. OSGQt

osg3.6以后去除了osgqt,所以要分开编译,如果3.6以下不含3.6则使用我下班的方法添加osgqt的编译
使用工具:qt cmake当然要准备好
下载源码
前提osg3.6已经编译完成,使用cmake之前要修改一下Cmakelist.txt的
新加

SET(DESIRED_QT_VERSION "5.8.0" CACHE STRING "")   
SET(CMAKE_PREFIX_PATH "E:\\Qt\\Qt5.8.0\\5.8\\msvc2015_64" CACHE PATH "")

在这里插入图片描述
在这里插入图片描述
然后开config
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置好以后generate openproject 然后就是vs2015编译了
ALL_BUILD INSTALL 完成

8. OSGOcean

OSGOcean是基于osg开发用来做水效果的
下载地址

(1)准备快速傅里叶变化算法库

我选择FFTW[下载地址]http://www.fftw.org/install/windows.html)

解压之后,启动vs命令行,并切换到解压目录:
然后运行以下三个命令

lib /def:libfftw3-3.def
lib /def:libfftw3f-3.def
lib /def:libfftw3l-3.def

然后会在目录中生成.h文件.lib文件,这也是编译时要连接的文件;

(2)编译osgOcean

首先采用上面用cmake生成osg工程的步骤产生osgOcean工程:
osg链接就不用说了,设置好就行了
在这里插入图片描述
我选择的是FFTW3勾上
在这里插入图片描述
正常configure
generate open project
vs2015打开以后正常ALL_BUILD
设置oceanExample为启动项目
把oceanExample设置为启动工程,把工作路径设置为exe所在目录:
在这里插入图片描述
启动的时候没有找到Lib dll 自己设置一下就完了
启动可看到效果

遇到的问题:
1.普通的lnk2019的问题就不说了,一般都是include库设置不对。。。能编译的都是有点基础的,直接排插就完了
2.nvcore/nvcore.h: No such file or directory,memory.h错误找不到nvcore/nvcore.h

这个需要重新编译nvtt:下载nvtt
然后cmake编译一下,方法同上不需解释了
可以直接在 E:\mypro\nvidia-texture-tools\project\vc12 目录下找到对应的vs版本,启动后生成解决方案
然后在指定的文件夹可以找到对应的文件
在这里插入图片描述

3.OSG3.40 编译时,无法打开输入文件“optimized.lib”

解决方案:

正常情况下,下图中会多出一项:ZLIB_LIBRARY_RELEASE,之后屡次编译,都提示“无法打开输入文件“optimized.lib””

因为ZLIB_LIBRARY就相当于是ZLIB_LIBRARY_RELEASE,而配置过ZLIB_LIBRARY_RELEASE后会忽略ZLIB_LIBRARY,

实际上,起作用的是ZLIB_LIBRARY,所以会发生错误“无法打开输入文件“optimized.lib””
在这里插入图片描述

测试方法:

创建一个vs项目,指定osg的include lib 目录,还有工作目录
在这里插入图片描述
在这里插入图片描述
附加依赖项:

OpenThreadsd.lib
osgViewerd.lib
opengl32.lib
glu32.lib
osgd.lib
osgDBd.lib
osgFXd.lib
osgGAd.lib
osgManipulatord.lib
osgParticled.lib
osgShadowd.lib
osgSimd.lib
osgTerraind.lib
osgTextd.lib
osgUtild.lib
osgWidgetd.lib
//main.cpp

#include <iostream>
#include <Windows.h>

#include <osgViewer/Viewer>
#include <osgDB/ReadFile>

using namespace std;

int main()
{	
	//这里修改成OSG数据包里面的实例数据
	string osgPath = "D:\\Work\\OSGBuild\\OpenSceneGraph-Data\\cow.osg";

	osgViewer::Viewer viewer;
	osg::Node * node = new osg::Node;	
	node = osgDB::readNodeFile(osgPath);
	viewer.setSceneData(node);
	return viewer.run();
}

在这里插入图片描述
编译启动:
在这里插入图片描述

本文参考:https://blog.csdn.net/After_April/article/details/102520644
https://blog.csdn.net/charlee44/article/details/86761461#2_10
https://blog.csdn.net/LISA_SMITH/article/details/94739101

  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值