UE 的很多工具链,是基于 UE 自身的功能编译出来的程序,如 UnrealPak、UnrealFrontEnd、UnrealVersionSelector 等,它们都是 Target
为Program
的类型的工程。
但是 UE 本身并没有提供创建这种工程的方法,所以我写了一个创建工具,能够方便地创建 Standalone Application 的模板工程,能够把 UE 当作一个大号的第三方库开发命令行合作或 GUI 程序。
首先,下载 我写的hxhb/ue4program,将其添加到系统的 PATH 路径中。添加之后的用法如下:
1 | # ue4program.exe ProgramName |
此时会在当前目录下创建出一个 StandaloneApplication
文件夹,其目录结构如下:
1 | StandaloneApplication |
本篇文章着重需要分析的是 *.target.cs
与*.build.cs
这两个文件.
创建出来之后,需要将 StandaloneApplication
文件夹移动到 Engine\Source\Programs
下,UE 所有的辅助程序 (UHT/UBT 等) 都在这个目录之下。
然后,运行 GenerateProgramProject.bat
,这是我仿照 UE 的GenerateProjectFiles.bat
写的一个脚本,通过调用 UBT 来创建 Standalone Application
程序,命令如下:
1 | # bash path in Engine\Source\Programs\StandaloneApplication |
注意 :直接在安装版引擎中使用上面的命令会报错(不允许创建非 Game 项目),因为虽然传入了-notinstallengine
参数,但是对 Engine/Build/InstalledBuild.txt
文件检测的优先级高于-notinstallengine
:
1 | Zhalipeng MINGW64 /d/UE_4.18/Engine/Source/Programs/StandaloneApplication (master) |
我写的脚本中做了检测,如果使用的是安装版引擎会先重命名 InstalledBuild.txt,生产完毕后会恢复(但是我还是建议不要在安装版引擎中执行)。其执行完毕后会在Engine\Intermediate\ProjectFiles
下生成:
1 | StandaloneApplication.vcxproj |
其实就是将当前项目添加到 UE 的解决方案,执行完毕之后,打开引擎根目录下的 UE4.sln
, 就可以看到创建的项目了:
先来编译运行看一下结果:
资料: