Visual Studio 2012编译Unreal 4

最近尝试了一下在Visual Studio 2012中编译Unreal 4,记录一下其中踩的坑 (其实这个纯粹是我蛋疼才这么干的,讲真还是升级VS比较方便…)

安装SDK

只需要下载一个windows 8.1 SDK安装即可突然发现以前每次重装系统后必备的DXSDK_Jun10用不上了,甚伤感

生成项目文件

首先,修改Engine\Source\Programs\UnrealBuildTool\Windows\UEBuildWindows.cs文件中编译器

/// Version of the compiler toolchain to use on Windows platform
public static readonly WindowsCompiler Compiler = WindowsCompiler.VisualStudio2012;

然后执行GenerateProjectFiles.bat即可生成UE4.sln工程项目

生成第三方库

这一步比较繁琐,由于默认是使用Visual Studio 2013编译的,所以第三方库里提供的都是VS2013文件夹;这里我们需要把对应的一个个弄一下~

先大概看看有多少第三方库需要倒腾一下

简单介绍下不同的库的处理方式。基本的策略就是能自己编译就自己编译,基本上Visual Studio 2012都有对应的工程不用设置;不然就试试cygwin;实在不行就直接复制粘贴好了~

Visual Studio 2012编译

以DirectShow为例,打开Engine\Source\ThirdParty\DirectShow\DirectShow-1.0.0\build\VS2012\DirectShow.sln,使用批生成即可:

需要这么处理的库

  • DirectShow
  • ForsythTriOO
  • FreeType
  • HACD
  • hlslcc
  • libOpus
  • libPNG
  • MCPP
  • nvTextureTools
  • nvTriStrip
  • Ogg
  • Recast
  • Vorbis

需要注意的是,使用Visual Studio 2012打开的.sln文件,应该是在VS2012或者vstudio11或者vc11之类的文件夹下面的版本。

ps. nvTextureTools中的nvtt项目使用了CUDA 5.0,而我机器上装的是5.5,所以手动改了下vcxproj文件才载入成功。

cygwin编译

只有ICU库是需要用cygwin编译,具体参考Engine\Source\ThirdParty\ICU\icu4c-51_2\readme.html,简单来说就是先运行Config for Windows - Release.bat然后运行Make on Windows.bat,编译时间长的令人发指。

直接复制粘贴

这个就很简单了,直接把VS2013里面的.lib文件之类的复制一份到同层VS2012就行了~

需要这么处理的库

  • PhysX
  • Qualcomm
  • FBX

运行时dll

首先需要安装Visual C++ Redistributable Packages for Visual Studio 2013;其次是在Binaries\ThirdParty\拷贝对应的文件,例如Engine\Binaries\ThirdParty\PhysX\APEX-1.3\Win32\VS2013复制一份到Engine\Binaries\ThirdParty\PhysX\APEX-1.3\Win32\VS2012里去就行了~

这一步其实不用记录的,因为直接在下一步运行的时候会提示xxx.dll加载失败,然后就懂了~

编译运行

将UE设为启动项目,运行文件为Development EditorWin64,直接F5即可!