1.需要准备主要相关文件
1)文件
源代码(下载页http://www.flightgear.org/download/source-code/)
我使用的版本:FlightGear-2020.4.0.tar.bz2
SimGear-2020.4.0.tar.bz2
FlightGear-2020.4.0-data.tar.bz2
第三方库文件(下载FlightGear Git - FlightGear 维基):
1. OpenSceneGraph 2.boost库 3.3rdParty
还可以直接下载osg的二进制文件:稳定版本 (openscenegraph.com)
boost库的下载链接:提升C++库 (boost.org)
一般下载最新版本
还可以用git直接拉取到本地仓库,克隆链接如下:
git clone https://git.code.sf.net/p/flightgear/simgear simgear
git clone https://git.code.sf.net/p/flightgear/flightgear flightgear
git clone https://git.code.sf.net/p/flightgear/fgdata fgdata
git 克隆 https://git.code.sf.net/p/flightgear/windows-3rd-party Windows-3rd-party
git clone -b fgfs-osg-36-1 GitHub - zakalawe/osg: OpenSceneGraph git mirror osg
所需软件
- CMake for Windows.下载并安装 Windows Win64-x64 安装程序(建议选择系统默认的安装路径),安装好后记得加到系统环境变量中
- Microsoft Visual Studio 2019 (MSVC).社区版本是免费的。不需要高级版本;他们的任何功能都不是构建FlightGear所必需的。默认情况下,将不安装C++编译器。您可以在安装过程中或安装后通过启动 MSVC 并尝试创建新的C++项目来选择此组件。要下载的是“具有C++的桌面开发”。确保选中 Windows SDK 和C++编译器的最新版本。截至 2020 年 8 月 10 日,最新版本的编译器是“MSVC 142 - VS 2019 C++ x64/86 构建工具 (v14.27)”。
- Qt5 用于集成 Qt5 启动器。下载在线安装程序,并选择与您的Visual Studio工具链匹配的版本,例如“Qt 5.15.1 --> MSVC 2019 64位”。任何超过5.9的版本都可以;5.15 推荐。保留默认的“开发人员和设计器工具”选项 - 编码和编译需要这些选项(安装时一定要将MSVC2019-64勾选上)。
- Git 使您的构建保持最新状态。它还简化了组件的下载。可选,但不能推荐它!
我使用的工具:
qt5.15.2 vs2019 CMake3.2.4.0 git2.3.6
2.创建目录 以及编写脚本参照如下网页
使用CMake进行构建 - Windows - FlightGear维基
如下是我的目录(此文件夹得全部文件使用git克隆下来得,可以随时拉取最新的版本),仅供参考
fgdata,simgear,osg放的是源码,flightgear-bulid,simgear-build,osg-build里存放的是编译过后各自的二进制文件,windows-3rd-party是第三方库,里面包括boost,3rdparty等等,install文件夹下的openscenengraph存放的是osg的编译过后的二进制文件,lib,include则是simgear编译链接成功后生成的用来编译flighgear提供动态链接库,bin是flightgear编译成功时生成的,里面有可执行文件
编译时直接启动脚本就行,这里重点说下编译时所遇到的问题以及解决办法
这个编译时间可能比较长,需要编译osg源码,以及simgear和flightear源码,不出问题的情况下可能需要半个小时左右,请耐心等待
1.如果脚本中的qt的编译器为msvc2015-64,VS为14 2015,编译simgear则可能会出现以下错误,导致其不能生成编译flightgear所需要的动态库
如果出现上述错误,请将编译脚本中的vs改为2019,qt的编译改为msvc2019-64
我拿vs2015,qt5.9.6,msvc2015-64编译flightgear2020.3失败,我猜测最新版本里的有些C++语法低版本的编译器不支持,所有报错
2.出现下面此类错误编译flightgear需要依赖simgear所生成的动态库,因为simgear编译通过,但是生成动态库的时候出错,所以需要重新编译simgear,并让其生成动态库
3.如果出现找不到find_package(osg)
-- Could NOT find osgDB (missing: OSGDB_LIBRARY OSGDB_INCLUDE_DIR)
-- Could NOT find osgGA (missing: OSGGA_LIBRARY OSGGA_INCLUDE_DIR)
-- Could NOT find osgUtil (missing: OSGUTIL_LIBRARY OSGUTIL_INCLUDE_DIR)
-- Could NOT find osgViewer (missing: OSGVIEWER_LIBRARY OSGVIEWER_INCLUDE_DIR)
-- Could NOT find osgText (missing: OSGTEXT_LIBRARY OSGTEXT_INCLUDE_DIR)
-- Could NOT find osg (missing: OSG_LIBRARY OSG_INCLUDE_DIR)
-- Could NOT find OpenThreads (missing: OPENTHREADS_LIBRARY
CMakeLists.txt:6 (FIND_PACKAGE)
由于FindOpenSceneGraph不是使用系统指定默认安装目录,而是自己手动使用CMAKE_INSTALL_PREFIX指定安装的目录因此找不到,将cmake安装到系统默认路径下即可
4.编译成功install目录下则会出现以下文件夹,include和lib是simgear编译链接成功生成的,bin是flightgear编译成功生成的,里面有fgfs.exe可执行文件,openscenegraph是编译osg源码所生成的
5.如果运行fgfs.exe文件是报错缺少openAL32.dll,event_core.dll,dbus-1-3.dll,Qt5Charts.dll,以及其他的osg和qt5的动态库链接库时,只需要在第三方库中找到所对应的文件复制到fgfs所在的文件夹下即可,嫌麻烦的话则把下面所有的.dll文件全部复制过去(以下是我的安装目录,仅供参考)
缺少qt5动态连接时,在qt安装目录下找到所对应的文件复制到fgfs所在的文件夹下即可,嫌麻烦的话则把下面所有的.dll文件全部复制过去(以下是我的安装目录,仅供参考)
全部加好就可以运行了
附飞行说明:(66条消息) Flightgear操作方式以及几种典型飞机的起飞方法_Mosquito_蚊子的博客-CSDN博客_flightgear怎么起飞
想看源代码的话可以用vs2019打开flightgear-build文件中的.sln文件即可,可以进行编译,修改等一系列操作
最后附一份我编译好的文件,里面包括源码以及可运行程序,亲测可以运行,里面还包含flightgear2020.3.exe安装包,qt5.15在线安装包,vs2019专业版安装包,CMake安装包,下载链接如下:
链接:https://pan.baidu.com/s/1ADan8E06-0mt1GCHijxoBA
提取码:mayr
--来自百度网盘超级会员V1的分享
目录
编译时直接启动脚本就行,这里重点说下编译时所遇到的问题以及解决办法