避开多版本VS和UE4的坑:保姆级Windows 10下AirSim 1.3.1编译配置指南
在Windows环境下配置AirSim开发环境,尤其是当系统中同时存在多个版本的Visual Studio和虚幻引擎时,往往会遇到各种棘手的编译问题。本文将从一个"环境冲突排查专家"的角度,详细拆解如何通过手动指定路径和参数,强制系统使用正确的工具链,将编译过程从"玄学"变为确定性的步骤。
1. 环境准备与版本要求
在开始之前,我们需要明确AirSim 1.3.1的硬性版本要求:
- Visual Studio 2019:这是必须的,VS2017或更早版本会导致编译失败
- Windows 10 SDK 10.0.18362或更高版本
- 虚幻引擎4.24:这是最低要求,低于此版本的UE4无法正常工作
注意:即使你的系统中有更高版本的VS或UE4,也必须确保上述特定版本已安装且可访问。
检查你的环境是否符合要求:
# 检查VS2019安装情况 & "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -version "[16.0,17.0)" -property installationPath # 检查Windows SDK版本 Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows Kits\Installed Roots" | Select-Object Name2. 多版本环境管理策略
当系统中存在多个VS和UE4版本时,关键在于如何精确控制编译时使用的工具链。以下是关键的管理策略:
2.1 环境变量优先级设置
Windows系统会按照特定顺序查找可执行文件,我们可以通过修改PATH环境变量来控制优先级:
- 打开系统属性 → 高级 → 环境变量
- 在系统变量中找到PATH,确保以下路径按此顺序排列:
- VS2019的工具路径(如
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64) - UE4.24的引擎路径(如
F:\Program Files\Epic Games\UE_4.24\Engine\Binaries\Win64)
- VS2019的工具路径(如
- 将其他版本的路径暂时移除或放在后面
2.2 使用显式路径调用工具
不要依赖系统默认路径,而是直接指定完整路径调用工具:
:: 错误做法 - 依赖系统默认选择 UnrealBuildTool.exe -projectfiles ... :: 正确做法 - 显式指定路径 "F:\Program Files\Epic Games\UE_4.24\Engine\Binaries\DotNET\UnrealBuildTool.exe" -projectfiles ...3. 解决编译过程中的典型问题
3.1 构建脚本下载缓慢问题
原始build.cmd会从GitHub直接下载依赖库,国内访问速度往往很慢。解决方案是替换下载源:
原始build.cmd中的下载链接:
set RPCLIB_URL=https://github.com/rpclib/rpclib/archive/v2.2.1.zip set CAR_ASSETS_URL=https://github.com/Microsoft/AirSim/releases/download/v1.2.0/car_assets.zip可以替换为国内镜像源(注意时效性):
set RPCLIB_URL=https://mirror.example.com/rpclib-v2.2.1.zip set CAR_ASSETS_URL=https://mirror.example.com/car_assets.zip3.2 强制使用指定版本编译
当系统中存在多个UE4版本时,必须强制使用4.24版本进行编译。关键参数如下:
"F:\Program Files\Epic Games\UE_4.24\Engine\Binaries\DotNET\UnrealBuildTool.exe" ^ -projectfiles ^ -project="E:\AirSim\Unreal\Environments\Blocks\Blocks.uproject" ^ -game ^ -rocket ^ -progress ^ -log="E:\AirSim\Unreal\Environments\Blocks\Saved\Logs\Build.log" ^ -2019关键点解析:
-projectfiles:生成VS工程文件-2019:强制生成VS2019格式的项目- 确保UnrealBuildTool.exe路径指向UE4.24的安装位置
4. 验证配置是否正确
完成上述配置后,可以通过以下方式验证环境是否正确设置:
检查生成的解决方案文件:
- 用文本编辑器打开生成的.sln文件
- 确认开头有类似
Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16的内容(16表示VS2019)
检查编译日志:
- 查看Build.log文件
- 确认使用了正确的工具链版本,如:
Using Visual Studio 2019 16.11.31727.386 toolchain (C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133)
运行时验证:
- 成功编译后,启动UE4编辑器
- 在输出日志中应能看到AirSim插件正确加载的信息
5. 高级技巧与故障排除
5.1 并行安装多个版本时的处理
如果你需要同时维护多个版本的AirSim开发环境,可以考虑以下策略:
使用符号链接:
# 为当前项目创建专用的UE4链接 New-Item -ItemType SymbolicLink -Path ".\UE4" -Target "F:\Program Files\Epic Games\UE_4.24"批处理脚本自动化: 创建setup_env.bat脚本,自动设置正确的环境变量:
@echo off set UE4_ROOT=F:\Program Files\Epic Games\UE_4.24 set VS2019_ROOT=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community set PATH=%VS2019_ROOT%\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64;%UE4_ROOT%\Engine\Binaries\Win64;%PATH%
5.2 常见错误及解决方案
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| MSB8020错误 | 使用了错误的工具集 | 在VS中右键项目 → 属性 → 常规 → 平台工具集,选择"Visual Studio 2019" |
| 找不到Windows SDK | SDK版本不匹配 | 安装10.0.18362版本SDK,并在VS安装器中确认已勾选 |
| UnrealBuildTool崩溃 | 调用了错误版本的UBT | 确保使用UE4.24目录下的UnrealBuildTool.exe |
| 插件加载失败 | 引擎版本不匹配 | 检查AirSim插件目录中的.uplugin文件,确认"EngineVersion"为"4.24" |
6. 最佳实践与经验分享
在实际项目中,我总结出以下几点经验:
隔离开发环境:为每个项目创建独立的批处理脚本设置环境变量,避免全局修改。
版本控制注意事项:
- 不要将生成的中间文件(如.sln、.vcxproj)提交到版本控制
- 在.gitignore中添加:
Unreal/Environments/**/Binaries/ Unreal/Environments/**/Intermediate/ *.sln *.vcxproj
性能优化:
- 将项目放在SSD上可以显著加快编译速度
- 在VS中启用并行编译:项目属性 → C/C++ → 常规 → 多处理器编译
调试技巧:
- 在AirSim插件的Build.cs中添加
bOverrideBuildEnvironment = true可以强制使用特定工具链 - 使用
-Verbose参数运行UnrealBuildTool可以获得更详细的日志信息
- 在AirSim插件的Build.cs中添加
经过这些配置后,你会发现AirSim的编译过程变得可预测和可重复。记住,关键是要精确控制每个环节使用的工具版本,而不是依赖系统的默认选择。