module.build.cs文件常见字段

string path = Path.Combile(p1, p2, p3);
string absolutePath = Path.GetFullPath(path);
//https://docs.unrealengine.com/4.27/en-US/ProductionPipelines/BuildTools/UnrealBuildTool/ThirdPartyLibraries/
RuntimeDependencies.Add(Path.GetFullPath(absolutePath), StagedFileType.NonUFS);
ModuleFiles属性文档
Target属性文档
if (Target.bBuildEditor)判断当前build配置是否包含Editor

Public/PrivateDependencyModuleNames属于静态链接,通常其Public/PrivateIncludePaths会自行处理正确。
Public/PrivateIncludePathModuleNames与DynamicallyLoadedModuleNames配合属于动态链接,因此如果你使用了非抽象函数,则会提示无法找到链接符号。这一对配置的典型用法参考 #474,一般就是LoadModuleChecked,然后调用接口的抽象函数。

关于PublicSystemLibraryPaths,PublicAdditionalLibraries,PublicLibraryPaths的问题

在(<)UE4.24的版本中,指定lib文件的方法跟visual studio里使用的方式一致:
  1. PublicLibraryPaths用于添加lib文件所在的目录
  2. PublicAdditionalLibraries用于添加lib文件,不包括路径信息
引擎寻找lib文件的方式就是将上面这两个选项指定的字符串进行组合拼接,验证拼接后字符串是否为有效路径。这个过程是很慢的,因此从UE4.24版本开始,引擎推荐如下使用方式解决这个问题:
如果仍坚持老的使用方式,则会报Warning,用以下方式可以消除这个Warning,但并不能消除老的方式的效率低下的问题:
  1. PublicSystemLibraryPaths取代PublicLibraryPaths,用于添加lib文件所在的目录
  2. PublicSystemLibraries来添加库文件,但只需要库的名字即可,不需要后缀。或者直接在cpp中用#pragma comment(lib,"avcodec.lib")这种写法,会从PublicSystemLibraryPaths指定的目录下去寻找

定义宏macro

PublicDefinitions.Add("MacroName=MacroBody");