在项目下创建的Program会导致二进制分发版本引擎生成项目文件失败

我们希望有一些Standalone的Program可以引用项目插件的代码,因此在项目的Source/Programs下面添加了Program来做这个事情,并且看UBT的代码是支持这个的,也能正确地发现项目下的Program。

但是发现这个实现在源码引擎下没有问题,在二进制分发的引擎下有问题。如果项目文件夹下有Program的Target.cs,就会在生成项目文件时触发错误:Targets with a unique build environment cannot be built with an installed engine.

发现这个问题是在4.27中。我们看了一下5.6.1应该仍然存在这个问题。重现项目也是5.6.1的。

下面是5.6.1中UBT中相关的代码(RuleAssembly.cs和TargetRules.cs中)。

[Image Removed]

[Image Removed]

<br/>

重现步骤

在项目的Source/Programs目录下添加Program的Target.cs,使用二进制分发版本的引擎,右键uproject文件选择Generate Visual Studio Project Files

您好, 由于二进制分发的引擎(installed build)是不重新编译引擎部分源码的,因此program如果使用了unique环境,是无法链接到正确的代码的.所以installed build是不支持 unique build environment 的

感谢回复,那这样的话是不是说明如果项目是installed build和source引擎混用的情况,项目下的Program就不能像引擎下那样组织了呢。我目前的做法是将Program的Target.cs重命名为一个别的后缀名,自己要改的时候才在本地把他改成正确的后缀名,只将他的可执行文件产物打出来后分发使用。

是的,如果program使用了unique环境, 只能在源码下构建,然后将二进制随installed build一起分发