osgEarth2.7+vs2010+win7编译方法

来源:互联网 发布:传奇被动技能攻击数据 编辑:程序博客网 时间:2024/05/05 14:55

1、首先在osg3.2目录中新建一个osgEarth文件夹,将所有包都下载到此文件夹中。

2、下载相应的源码包以及依赖包,可在:http://pan.baidu.com/s/1o70sB6E 密码:n9l6,下载,它包括以下包,如下图所示:


3、首先解压curl-7.46.0.zip,然后在curl-7.46.0目录中新建一个build,如下图所示:


4、打开CMake,将curl-7.46.0目录下的CMakeLists.txt文件拖到CMake,并设置Where to build the binaries的编译路径,如下图所示:


5、点击Configure,配置使用VS2010编译,如下图所示:


6、点击完成,会进入到以下界面,如下图所示:


7、设置CMAKE_INSTALL_PREFIX的路径,设置为:D:\osg3.2\osgEarth\curl-7.46.0,如下图所示:


8、点击Configure按钮,进行最后一次的配置,配置完之后会出现以下界面:


9、最后点击Generate按钮,生成vs编译的所需文件,如下图所示:


10、使用vs2010打开CURL.sln文件,在批生成中选择ALL_BUILD的Debug和Release,如下图所示:


11、点击生成按钮,等待片刻就会出现生成成功界面,如下图所示:


12、再次打开批生成,然后将ALL_BUILD的Debug和Release的对勾去掉,然后选择INSTALL的Debug和Release,如下图所示:


13、点击生成按钮,就会将所需要的bin、lib安装到D:\osg3.2\osgEarth\curl-7.46.0目录中,以下是安装成功的界面,如下图所示:


14、解压gdal1100.zip,然后进入到gdal-1.10.0目录中,找到makegadal10.sln,然后使用vs2010打开,如下图所示:


15、打开makegdal10.sln之后,里边有一个工程,如下图所示:


16、然后选择生成菜单下的批生成打开皮生成对话框,然后选择Release版本,(注意:由于在CMake选择gdal库时只有Release版本,因此在编译osgEarth时,只能选择Release版本,否则在编译Debug时会出现gdal连接出错,会出现:gdal.lib(cpl_vsisimple.obj)检测到“_ITERATOR_DEBUG_LEVEL" 的值不匹配项:值"0"不匹配值"2"(tinyxml.obj中),这是由于在编译osgEarth的Debug时引用了Release版的gdal.lib导致的,(Debug版本生成了也没用,后面第三方库没有Debug的路径指标)),如下图所示:


17、最后生成成功,如下图所示:


18、生成成功之后会在C:\warmerda\bld生成三个文件夹,分别是bin、data、html,如下图所示:


19、在D:\osg3.2\osgEarth\gdal-1.10.0目录中会生成一个Release,和gdal.lib、gdal_i.lib、gdal110.dll文件,如下图所示:


20、将C:\warmerda\bld中的三个文件夹以及D:\osg3.2\osgEarth\gdal-1.10.0中的gdal.lib、gdal_i.lib、gdal110.dll文件拷贝到D:\osg3.2\osgEarth\gdal-1.10.0\Release目录中,如下图所示:


21、解压geos-3.2.3.tar.bz2文件,进入到D:\osg3.2\osgEarth\geos-3.2.3\build目录中,此时会看到有三个版本,其中msvc10是vs2010版本的,如下图所示:


22、进入到msvc10中,此时会有一个geos.sln文件,使用vs2010打开,会有多个工程,如下图所示:


23、选择生成->批生成,会弹出以下对话框,我们选择全部生成,如下图所示:


24、点击生成,那么会提示成功5个,失败3个,如下图所示:


25、出现这种情况是由于Debug引用了Release版本的lib或者Release引用了Debug版本的lib,如下图所示提示的错误信息:


26、那么解决方法就是分别编译Release和Debug,我们先编译Debug版本,选择版本可通过工具栏中的Debug,如下图所示:


27、然后选择生成->清理解决方案,如下图所示:


28、选择生成->生成解决方案,如下图所示:


29、最后生成成功,如下图所示:


30、将工具栏上的Debug更改为Release,如下图所示:


31、重复27、28步,先清理在生成,最后生成成功,如下图所示:


32、然后就会在D:\osg3.2\osgEarth\geos-3.2.3\build\msvc10目录中生成了Debug和Release目录,如下图所示:


33、Debug目录中的内容如下图所示:


34、Release目录下的内容为,如下图所示:


35、到此geos编译完成,那么剩下的将gwaldron-osgearth-osgearth-2.7-0-g25ce0e1.zip、libzip-windows.zip、protobuf-2.6.1.zip分别解压。

36、其中libzip-windows.zip包含了include和lib文件夹,是已经编译好的,如下图所示:


37、对于protobuf-2.6.1.zip我觉得只解压不用编译的,因为在CMake时只让选择了该目录,并没有选择库文件,我是实现编译好的,编译方法和curl-7.46.0编译方法相同,这里就不在说明。

38、现在来编译osgearth,解压gwaldron-osgearth-osgearth-2.7-0-g25ce0e1.zip文件,最后得到gwaldron-osgearth-25ce0e1文件夹,进入到gwaldron-osgearth-25ce0e1文件夹中,在此文件中新建一个build,如下图所示:


39、打开CMake,然后将gwaldron-osgearth-25ce0e1文件夹中的CMakeLists.txt拖放到CMake中,然后选择编译目录,如下图所示:


40、点击Configure按钮,会弹出选择编译器的对话框,如下图所示:


41、点击完成,就会生成相应的配置,由于有些配置无法加载,会弹出一个错误对话框,如下图所示:


42、点击OK按钮,将错误对话框关闭,然后配置相关信息,配置CMAKE_INSTALL_PREFIX,如下图所示:


43、将CMAKE_INSTALL_PREFIX的路径配置为D:\osg3.2\osgEarth\gwaldron-osgearth-25ce0e1,也就是解压之后的文件夹,如下图所示:


45、配置cur的linclude目录和库文件,如下图所示:

46、配置好了curl的include目录和lib文件,如下图所示:





47、配置gdal,从下图中可知,可配置的gdal只有Release版本的,没有Debug版本的,因此在编译osgEarth时,编译Release才能编译通过,而Debug会失败4个左右,如下图所示:


48、gdal的include目录为gdal的根目录,如下图所示:


49、配置geos的include目录,该目录为D:\osg3.2\osgEarth\geos-3.2.3\source\headers,如下图所示:


50、配置geos相关的lib,如下图所示:


51、配置osg相关的lib信息,如下图所示:(若OSG的环境设计已经弄好,这个就直接配置好)





52、配置protobuf的目录,如下图所示:



53、选中Advanced框,那么此时下边就会多出两行来配置zlib信息,如下图所示:


54、配置zlib的include和lib信息,如下图所示:


55、配置好以后,按configure按钮,此时还会出现两个红色的选项,为MINIZIP,如下图所示:


56、忽略以上选项,直接按configure按钮,然后出现配置完成,如下图所示:


57、点击Generate按钮,生成工程信息,如下图所示生成成功界面:


58、此时就会在build目录中生成vs2010工程,如下图所示:


59、使用VS2010打开OSGEARTH.sln,会出现以下界面:


60、由于在osgEarth2.7中编译带qt的会出现错误,我们将所有关于qt的编译的工程卸载(错误原因可能是osgEarth2.7于qt的版本不对应,osgEarth2.7的qt的对应版本为qt5.2.1的,因此我使用qt5.5编译出错,出错信息如下相关截图),卸载的工程有Lib、Samples、Tools下的相关工程,如下图所示:

(若QT版本对了,将不会出现这个问题)


错误信息:


61、为各个项目配置include目录,它包括:Lib下的osgEarth、osgEarthAnnotation、osgEarthFeatures、osgEarthSymbology、osgEarthUtil,Plugins下的Plugin osgearth_feature_ogr、Plugin osgearth_feature_tfs、Plugin osgearth_feature_wfs、Plugin osgearth_gdal以及ALL_BUILD,这些工程一定要配置include,否则在编译时会提示找不到头文件,配置的include路径如下图所示(注意:要选择是Release版本)

可以直接在包含目录中复制:

D:\OSG\OSGEarth\gdal-1.10.0\alg;D:\OSG\OSGEarth\gdal-1.10.0\apps;D:\OSG\OSGEarth\gdal-1.10.0\frmts;D:\OSG\OSGEarth\gdal-1.10.0\bridge;D:\OSG\OSGEarth\gdal-1.10.0\frmts\vrt;D:\OSG\OSGEarth\gdal-1.10.0\gcore;D:\OSG\OSGEarth\gdal-1.10.0\man;D:\OSG\OSGEarth\gdal-1.10.0\ogr;D:\OSG\OSGEarth\gdal-1.10.0\port;D:\OSG\OSGEarth\gdal-1.10.0\swig;D:\OSG\OSGEarth\gdal-1.10.0\wince;$(IncludePath)


//------如果配置错误,会出现以下错误,如下图所示,出现以下情况要找到相应的工程把相应的头文件路径添加到include中去,具体可通过文件名到相应的目录搜索即可


-//////此处是指如果不对这些工程进行配置就会出现这样的问题,可以用来在运行工程前查看是否配置正确。


62、为osgEarth的Release添加两个lib库文件,文件为odbc32.lib,odbccp32.lib,否则编译时会出错,如下图所示:


如果不加lib文件会出现如下图所出现的错误:


63、配置好之后就选择生成->批生成,然后选择ALL_BUILD的Release版本,如下图所示:


64、点击生成按钮就进入了编译阶段,此时可能要花费点时间,如下图编译成功:


65、然后再次选择生成->批生成,将ALL_BUILD的Release的对勾去掉,然后选择INSTALL的Release版,如下图所示:


66、点击生成按钮后,就会生成相应的信息,此时也会有一个错误,忽略即可,如下图所示:



(或者)


67、也可以按照以上办法生成Debug版本,不过也要配置相应的include和lib文件,在编译过程中出现的错误可忽略,本文是生成了Debug版本。

68、生成之后就会在D:\osg3.2\osgEarth\gwaldron-osgearth-25ce0e1目录生成bin、include、lib文件夹,如下图所示:


69、为了方便管理我们将相应的文件,我们将在D:\osg3.2\osg3.2.1目录中创建一个osgEarth文件夹对文件进行汇总(D:\osg3.2\osg3.2.1目录中包含了有osg、osgOcean等的bin、inlcude、lib文件):

(1)将D:\osg3.2\osgEarth\gwaldron-osgearth-25ce0e1目录下的bin、include、lib文件拷贝到D:\osg3.2\osg3.2.1\osgEarth目录中。

(2)将D:\osg3.2\osgEarth\gwaldron-osgearth-25ce0e1\build\bin\Release和D:\osg3.2\osgEarth\gwaldron-osgearth-25ce0e1\build\bin\Debug目录中的文件全部拷贝到D:\osg3.2\osg3.2.1\osgEarth\bin目录中。

(3)将D:\osg3.2\osgEarth\gwaldron-osgearth-25ce0e1\build\lib\Release和D:\osg3.2\osgEarth\gwaldron-osgearth-25ce0e1\build\lib\Debug目录中的文件全部拷贝到D:\osg3.2\osg3.2.1\osgEarth\lib目录中。

(4)将D:\osg3.2\osgEarth\gwaldron-osgearth-25ce0e1目录下的tests、data文件拷贝到D:\osg3.2\osg3.2.1\osgEarth目录中,如下图所示:


70、将bin目录添加到path环境变量中,如下图所示:


71、将D:\osg3.2\osg3.2.1\osgEarth\tests目录添加到OSG_FILE_PATH变量中,如下图所示:


72、打开DOS窗口输入:osgViewer gdal_tiff.earth回车,此时会出现一个缺少libcurl.dll文件,如下图所示:


73、解决以上方法是将该文件添加到paht环境变量中去,我们还是将文件放在D:\osg3.2\osg3.2.1\osgEarth目录中,在该目录中新建一个curl-7.46.0文件夹,然后将D:\osg3.2\osgEarth\curl-7.46.0目录下的bin、lib、include文件夹拷贝到D:\osg3.2\osg3.2.1\osgEarth\curl-7.46.0文件夹中,如下图所示:


74、将D:\osg3.2\osg3.2.1\osgEarth\curl-7.46.0\bin添加到path的环境变量中,如下图所示:


75、在次打开DOS窗口(注意:不能使用之前打开的DOS窗口),然后输入:osgViewer gdal_tiff.earth命令回车,如果成功就会出现如下图所示的界面:



-----------------------

最后自己单独运行D:\OSG\OSGEarth\gwaldron-osgearth-25ce0e1\bin的EXE时,有些会提示.dll问题,这个问题直接在网上找到相应的.dll放入system32或者64中即可。


0 0
原创粉丝点击