如何在使用WIN10 Visual Studio 2015 编译FlightGear源码(2020.1.1版本)
1 目录准备
- window 10 系统
- CMake UI 下载最新的 (https://cmake.org/download/)
- VS 下载 Visual Studio 2015 企业版也是可以的 官方要求最低 Express 版本。(我安装的是 VS2015企业版本,关于C++\WINDOW SDK都全部装上了)
- 其他下载按照1.1给的脸颊下载。
- 打开官方教材 http://wiki.flightgear.org/Building_using_CMake_-_Windows
1.1 按照官方建议目录来
目前基本都是64bit系统,其中需要下载的
- 3rdParty.x64 /
- OpenSceneGraph / ( OSG CMake install )
- Boost / (latest version can be downloaded from http://www.boost.org/) 下载最新版本
64-bits 目录结构
3rdParty.x64 / bin / include / lib / Boost / (latest version can be downloaded from [http://www.boost.org/](http://www.boost.org/ "http://www.boost.org/")) boost / lib64 / install / msvc140-64 / ( for VS2015 64-bits, or msvc100-64 for VS2010 64-bits, or msvc90-64 for VS2008 64-bits ) OpenSceneGraph / ( OSG CMake install ) bin / include / lib / SimGear / (create this empty for now, subfolders will be created by build process 只是空目录后面会自动生成文件过来) include / lib / FlightGear / (create this empty for now 只是空目录后面会自动生成文件过来) include / lib /
1.2 实际目录如下图
${MSVC_3RDPARTY_ROOT} 表示根目录,比如我的叫 FLIGHTGEAR_ROOT_X64 放在了D盘根目录。
1.3 下载 flightgear源码
下载源码,包括3个部分
- simgear
- flightgear
- flight-data
我下的是2020.1.1 提交的版本,应该是目前最新的release版本代码。在哪里下?
官方入口: http://wiki.flightgear.org/FlightGear_Git 进入找到最新的release版本,这里不建议编译老版本,老版本意味着失去了最新的支持。
1.4 拷贝到1.1构件的目录
把源码拷贝过来,如下图,并增加文件夹 flightgear-2020.1.1-build、simgear-2020.1.1-build 空文件夹,作为源码编译后生成代码存放的文件夹。
如下图,
- flightgear-2020.1.1 下载的源码
- flightgear-2020.1.1-build 空文件夹,用于cmake ui 生成 visual studio 工程文件。
- simgear-2020.1.1-build 下载的源码
- simgear-2020.1.1-build 空文件夹,用于cmake ui 生成 visual studio 工程文件。
2. CMake 编译
2.1 设置编译源码目录
首先你要下载CMake,打开CMake 如下图,设置 simgear的源码和编译后的文件存放目录
2.2 点击【Configure】
弹出框设置,点击【 Finish】
注意,一定要安装 Visual Studio 2015 高版本的不支持、一定要安装 Visual Studio 2015 高版本的不支持、一定要安装 Visual Studio 2015 高版本的不支持。官方提到vs2010-2015的版本都是支持的。
2.3 错误处理一般是 boost目录没有设置
设置 Boost目录
继续点击 【Configure】
2.4 错误处理设置工程输出目录 CMAKE_INSTALL_PREFIX
CMAKE_INSTALL_PREFIX 是 VS2015工程输出目录。
如果还有错误,一般就是NOT FIND 错误,记住,C++的错误大多数是某某路径设置不正确。如下图本次设置
继续点击 【Configure】
2.5 生成 Generate
如果编译结果遇到 Warning 不要理会,还是点击 Generate 按钮进行VS2015工程代码生成。
如果成功,那么显示
可以 Open Project 对 Simgear 源码编译。
3 编译 Simgear 源码
注意必须先编译 Simgear 源码,之后才能进行 FlightGear 源码的生成与编译
3.1 编译 解决方案
打开VS2015可见
有61个工程。等等VS2015加载项目完毕
选 Release 便右键工程解决方案,点击【生成解决方案】,要一定时间根据个人电脑配置。
如上图,如果出现了类似的提示,恭喜你编译成功
3.2 编译Install 工程项目,生成到指定目录
这里生成的目录就是 CMAKE_INSTALL_PREFIX 设置的目录
出现错误了
这个错误不知道如何解决,直接去掉这个文件,看上去缺少 header文件,因为是test项目,直接从 工程中去掉。
生成成功 查看我们的目录
4.CMake 编译FlightGear源码
cmake编译 flightgear 源码工作是跟 gear一样的,中间多出一个 simgear目录设置。
4.1 设置FlightGear路径,并点击 Configure
弹出设置框设置
你应该注意到 这个步骤跟Simgear是一样的
4.2 设置 Boost目录
你的CMake一定会报错,如下:
因为我们参数 BOOST_INCLUDE_DIR 没有正确设置,
这个步骤我们一次设置两个参数
- BOOST_INCLUDE_DIR
- CMAKE_INSTALL_PRFIX
你应该注意到 这个步骤跟Simgear是一样的
4.3 设置错误SimGear_DIR 设置
这里的 SimGear_DIR 就是跟前面生成的不同之处。
如下 Could not find a package configuration file provided by "SimGear"
(requested version 2020.1.0) with any of the following names:Could not find a package configuration file provided by "SimGear"
(requested version 2020.1.0) with any of the following names:
这个问题我折腾半天,其实没有细看错误提示。提示说的很清楚,缺少SimGearConfig.cmake 我们应该在我们设置的目录中查询就知道了
设置 SIMGEAR_DIR
点击 Configure
4.4 生成
你可能看到还有不少报错,但是都是 Warning,你可以忽略
5 编译 Flightgear
好了以上关于Flightgear的步骤其实跟 Simgear是一样的,使用VS2015编译也是一样的,如下设置
选择 Release 模式 x64 点击【生成解决方案】
编译成功后选择 INSTALL工程,右键点击【生成】
安装到指定目录
6 拷贝配置Flightgear-DATA 数据
把 fliight-data 拷贝到 D:\FLIGHTGEAR_ROOT_X64\install\msvc140-64\FlightGear 并命名位 data
7 调试 ctrl+F5
在工程项目属性中
需要在 fgfs项目属性中 调试参数
--fg-root=D:\FLIGHTGEAR_ROOT_X64\install\msvc140-64\FlightGear\data
注意:如果调试遇到一些DLL缺少问题请看下面的解决方案。比如 osg131开通的dll
问题
最后 是一些 dll文件的问题需要把dll文件拷贝到执行目录 D:\FLIGHTGEAR_ROOT_X64\install\msvc140-64\FlightGear\bin 我也不知道为什么,还不知道C++中如何处理这些。
拷贝 D:\FLIGHTGEAR_ROOT_X64\3rdParty.x64\bin 所有DLL文件
拷贝 D:\FLIGHTGEAR_ROOT_X64\install\msvc140-64\OpenSceneGraph\bin 所有DLL文件
拷贝 D:\FLIGHTGEAR_ROOT_X64\install\msvc140-64\OpenSceneGraph\bin\osgPlugins-3.4.2 整个文件夹到
以上文件拷贝到 D:\FLIGHTGEAR_ROOT_X64\install\msvc140-64\FlightGear\bin 目录