UnrealEngine UnityBuild模式编译第三方代码问题
UnrealEngine默认开了UnityBuild模式,把多个代码文件合并到一个较大的cpp文件进行编译。
这样是为了减少总编译任务数,尽量避免单个编译任务代码内容太少导致在切换任务上消耗太多时间,
尤其分布式编译情况下,任务切换成本更高。
UnityBuild参考日志
1>[22/102] Compile [x64] Module.Core.11.cpp 1>[26/102] Compile [x64] Module.Core.14.cpp
但是工程引入第三方代码时这种机制可能会带来负面效果,比如不同源代码针对同一个符号反复定义,
单个源文件各自编译不会有问题,单合并到一个cpp代码,一次编译就可能发生冲突,
为此需要在相关模块build.cs关闭UnityBuild
public class ModuleForThirdPartyCode: ModuleRules { public ModuleForThirdPartyCode(ReadOnlyTargetRules Target) : base(Target) { bEnableUndefinedIdentifierWarnings = false; ShadowVariableWarningLevel = WarningLevel.Off; IWYUSupport = IWYUSupport.None; bUseUnity = false; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步