sunsenzhen 发表于 2016-1-15 23:22:30

最新版osgearth2.7++编译心得

       今天要写点osgearth编译的心得,因为我也是正在入门中,编译osgearth是研究深入的第一步,网上虽然有编译好的包,但是授人以鱼不如授人以渔。大道理不多讲,现在就写点我在学习编译osgearth编译过程中的心得,不是教程胜似教程,因为思路在这儿。适合,正在焦急编译,却总不成功的朋友,我开始就是这样,弄了整整4天才编译通过OSGEARTH2.2,后来知道了流程,就顺利编译通过了osg3.4+osgearth2.7++(VS2010+win7)。
        首先,如果是如过你是刚c++入门的小白,请先练点基本功,起码知道CMAKE,怎么用。以及一些基本的编译常识。这个是个基础。我的基础就比较薄弱,以前用过c++两三个月用过OSG一个月以上,基本知道类的调用,也有opengl的概念功底(12月++),了解一点编译器cmake的使用。当然,如果是小白,也不可怕,只要你爱好,去百度,不会什么就百度什么,这个我写下自己这个历程的心得。
        一、要确定编译OSG
         1.确定版本
        如果,想要编译新的版本的osgearth,例如下载github上最新的源码,就要用新的OSG库,最好用osg3.4。如果你有了osg3.0.1,不想再次编译了,就只能编译osgearth2.2的版本的了。其他的版本对应,可以参考他人的经验教程。
        2.第三方库编译
        第三方库(3dparty),这个库很重要,里面有curl、freetype、iff/png/jpeg、zlib、dea……。等一些库,特别是要编译比较新的osg版本,第三方库就要越多,其中一些库是必须的,如图片、字体、压缩等库,也有些是插件库,有他们就能编译更多的插件。怎么知道需要哪些库?先Cmake一下,红的一大片,什么后面写着NO-FIND,就去搜什么,如果需要编译,就先搜编译。这个第三方库找的越全越新越有利于你编译。(怕辛苦是不对的,如果没有耐心,就先知难而退去找点人家编译好的用吧,这个是个权宜之计,最终还要自主编译,因为不编译源码就去运行例子就学的不透!)
        3.编译过程
        参考网上的例子吧,一搜一堆,但是质量各异。大致流程就是那样,在CMAKE中设置好路径名字。ALL_BUILD 编译(D/R),等三个钟头,如果都生成成功,恭喜,第一步OK!如果有个别生成错误,就要好好看看错误的信息提示,是少什么东西或者什么版本不对。如果是某个例子(Sample)错了,那也可以忽略,只要lib和dll生成成功就行了!
        二、继续找OSGEARTH所需要的第三方库
        1.这里很重要,特别是GDAL、GEOS、CURL、(protobuf,新的)sqlite、Zlib等。与OSG类似,有些是必要的,有些是插件。具体看CMAKE通过不通过就知道,这里CMAKE要用3.1以上的版本。
        2.这里用的3dparty和编译osg用的3dparty,要一致!
        三。编译osgearth
        1.注意设置Include目录,lib 目录,其中lib目录要加上即将编译生成osgearth 的lib库目录。这点很重要,
        2.如果编译有失败,仔细看看失败的原因,然后根据意思自己推断一下。相信自己的直觉。
最后,总结一点,就是耐心+勇气+不畏困难!
        可能写的太含糊其词,如有具体问题欢迎交流!qq:329611847
         

       
       

20091009 发表于 2016-1-20 19:40:53

我编译了一周也没通过,快死掉了~不知道是哪个插件不对,但是在cmd中运行生成的exe是可以生成的,但是生成的例子却不能正常运行,不知道到底是缺啥,由于编译的工作环境没有网络,弄啥都特别慢,我正好也是vs2010+win7

rpgpp 发表于 2016-1-27 16:36:56

生成的例子却不能正常运行, 一般是缺失什么动态库把,把3rd或者必要的dll拷贝到生成目录就好了啦

earth动态库生成的目录不是运行目录,在lib/debug release里,复制到bin里

sunsenzhen 发表于 2016-1-28 10:17:11

rpgpp 发表于 2016-1-27 16:36
生成的例子却不能正常运行, 一般是缺失什么动态库把,把3rd或者必要的dll拷贝到生成目录就好了啦

earth ...

是的,第三方库里的一些dll要拷贝,或者设置系统变量path中,或者提示缺少什么,你就把他们拷贝到一起!

psj 发表于 2016-2-21 22:55:53

楼主,你好,
如你所言:
      2.这里用的3dparty和编译osg用的3dparty,要一致!,
是否可以这样理解:curl、minzip、zlib、gdal等编译osg用的3dparty直接拿来进行earth编译,保持版本一致,不用再自行编译了?

sunsenzhen 发表于 2016-2-23 21:42:46

psj 发表于 2016-2-21 22:55
楼主,你好,
如你所言:
      2.这里用的3dparty和编译osg用的3dparty,要一致!,


对,是这个意思,编译osg时用不到那么多的库,以上的那些库是OE需要的!

fjlinguanyu 发表于 2016-4-16 13:58:58

楼主你好,请问3dparty库是否需要自己编译呢,为什么在osgearth_map例子中读取影像图会是白色一片,是不是对应的libjpeg库太旧的的问题(osg官方下载的库太旧,需要自己编译)?我的osgearth编译是最新的版本。谢谢

fjlinguanyu 发表于 2016-4-16 14:01:00

楼主是否介意,送份你编译好的库给一份,我感觉自己编译总是有问题?邮箱是lin945679@163.com

sunsenzhen 发表于 2016-6-8 16:09:20

fjlinguanyu 发表于 2016-4-16 14:01
楼主是否介意,送份你编译好的库给一份,我感觉自己编译总是有问题?邮箱是

你好,我不介意,但是文件太大了,网上也有下载的。这个必须自己耐心编译!
页: [1]
查看完整版本: 最新版osgearth2.7++编译心得