如果在build.cs构建配置中添加如下代码:
RulesCompiler.GetModuleFilename()
则编译时会出现警告或错误(preview版本中貌似不允许你使用直接提示error,正式版允许你编译通过但是会提示此API已经废除掉了):
warning CS0612: 'UnrealBuildTool.RulesCompiler.GetModuleFilename(string)' is obsolete
解决办法:
演示例子是获取第三方库的目录的(假设../../ThirdParty/是我们工程存放第三方库的位置)
using System.IO; using UnrealBuildTool; public class MyProject : ModuleRules { RulesAssembly r; private string ModulePath { get { return Path.GetDirectoryName( r.GetModuleFileName(this.GetType().Name).CanonicalName); } } private string ThirdPartyPath { get { return Path.GetFullPath(Path.Combine(ModulePath, "../../ThirdParty/")); } } public MyProject(TargetInfo Target) { FileReference CheckProjectFile; UProjectInfo.TryGetProjectForTarget("MyProject", out CheckProjectFile); r = RulesCompiler.CreateProjectRulesAssembly(CheckProjectFile); } }
这样就能使用ThirdPartyPath变量了且不会出现编译警告,注意必须添加命名空间:System.IO
参考:
https://answers.unrealengine.com/questions/396982/cant-build-project-in-ue-412.html