本文描述flightgear vs2013编译调试可运行。以前也写过fg3.4的编译,如果想去看的请参考http://www.freeyun.com/flightgear-3-2-0-generation-debug.html
最早的fg2.6的编译已删除,因存在一定的误导性。适用3.4以上面的版本,注意看osg要求的版本。
必备软件
下载安装解压cmake、osg、3rdParty:http://pan.baidu.com/s/1qW9WOES
新建环境变量OSG_DIR D:Program Files (x86)OpenSceneGraph
flightgear simgear 开发的版本:http://sourceforge.net/p/flightgear/_list/git?source=navbar
flightgear simgear 稳定的版本:http://www.flightgear.org/download/source-code/
编译的目录说明
3rdParty:第三方库
flightgear-build:FG的生成vs2013目录
simgear-build:SG的生成vs2013目录
simgear及flightgear:源代码目录
bin:里面放了3rdParty的bin,和osg的bin目录,同时也需要指定fgfs.exe,比如我指定的vs2013的工作目录D:FlightGear-devbin。还有一种方法就是吧3rdParty和osg两者bin都添加到环境变量Path。
data:顾名思义就是fg的资源目录,你可以下载我提供的,那个是当前最新仓,当然你sim和fg也得是最新仓的,解压出来后,可以直接在我上面更新,省下很多时间,如你用了指定版本的,可以用安装版的data。
terrasync-dir:这个目录是空的,用于存放联网下载更新机场地景等等目录。
关于其他目录,不在这个范围之内就不解释。
Cmake简单三步
点击configure->选择编译器->点击Generate
编译simgear
修改simgearsimgearprops下面的PropertyInterpolationMgr.cxx函数
void PropertyInterpolationMgr::update(double dt)
,这个是一个bug,操作容器出错,
void PropertyInterpolationMgr::update(double dt) { if( _rt_prop ) dt = _rt_prop->getDoubleValue(); for (InterpolatorList::iterator it = _interpolators.begin(); it != _interpolators.end(); ) { for (double unused_time = dt;;) { PropertyInterpolatorRef interp = it->second; unused_time = interp->update(*it->first, unused_time); if (unused_time <= 0.0) // No time left for next animation { ++it; break; } if (interp->_next) { // Step to next animation. Note that we do not invalidate or delete // the current interpolator to allow for looped animations. it->second = interp->_next; ++it; } else { // No more animations so just remove it it = _interpolators.erase(it); break; } } } }
source code:D:/FlightGear-dev/simgear
the binaries:D:/FlightGear-dev/simgear-build
CMAKE_INSTALL_PRE:d:/Program Files (x86)/SimGear
打开sln文件, 编译INSTALL项目
新建环境变量SIMGEAR_DIR d:/Program Files (x86)/SimGear
编译flightgear
source code:D:/FlightGear-dev/flightgear
the binaries:D:/FlightGear-dev/flightgear-build
运行调试
设置fgfs启动项目并添加调试参数(选择fgfs->右键属性->调试->命令参数)
--fg-root="D:FlightGear-devdata" --geometry=800x600 --terrasync-dir="D:FlightGear-devterrasync-dir" --disable-ai-traffic --multiplay=out,10,127.0.0.1,5000 --multiplay=in,10,127.0.0.1,5001 --enable-terrasync --log-level=debug
指定了data资源目录(如果按照目录结构也可以省掉fg-root参数) 分辨率 地景更新目录,关闭AI,联网的操作,然后你看你的网速了,会联网更新地景,进入到飞机画面,如果你想启动其他飞机,你也需要
--fg-aircraft=“飞机的目录名字(D:FlightGear-devdataAircraft)”比如 --aircraft="c172p"。
关于更多的参数请看手册。
最新飞机下载:https://svn.code.sf.net/p/flightgear/fgaddon/trunk/Aircraft/
图flightgear vs2013运行后
总结
如果你发现出现问题了,请重复查看是否漏了那些步骤。
本文写的在后面,flightgear也一直在更新,更多的信息推荐去看wiki.flightgear.org,如果你对最新版本的感兴趣也去下载git仓,sf.net上,由于之前的git仓也已移到sf.net上面。如果你只需要制作飞机地景,就不需要编译FG,因为它有提供专门的工具制作,直接运行FG起来看效果,前提是你要知道怎么使用。作为开源的项目可能代码写的不好,可以去修改它。用的是3.7的版本号,已经有QT 5.0在里面。用来代替fgrun的那个图形启动界面。