gpt4 book ai didi

c++ - 是否可以在构建时为 Unreal 项目定义预处理器指令?

转载 作者:行者123 更新时间:2023-12-05 05:31:49 28 4
gpt4 key购买 nike

我正在寻找一种在虚幻引擎项目的项目构建/ cooking 时轻松定义宏/预处理器指令的方法。

例如,如果我希望定义的 C++ 宏 MY_BUILDTIME_VAR 在某些构建中为 0,在其他构建中为 1,而不必每次都修改源代码,以类似于许多工具中环境变量的方法(即 node.js 中的 NODE_ENV),或命令行方法即 g++(参见 here)。

我知道可以在项目的 target.cs 中使用 GlobalDefintions.Add("MY_TARGET_VAR=0") 或模块范围的宏来定义目标范围的宏在带有 PublicDefinitions.Add("MY_MODULE_VAR=0") 的模块的 Build.cs 中。将所有内容定义在一个地方会有所帮助,但这些定义仍然存在于源文件中,并且无法在构建时更改。

official documentation提到了几种使用自定义参数构建/ cooking Unreal 项目的方法,例如 Project Launcher 工具和 RunUAT 脚本文件。它们中的任何一个都允许构建时宏定义吗?

注意:我没有使用 MS Visual Studio,而是仅使用带有 .uproject 的 JetBrains Rider,因此我无法在 .sln 解决方案文件中定义它们。

最佳答案

使用环境变量并在 build.cs 文件中读取它。根据环境变量设置宏的值。

这是我为此目的使用的一个方便的实用方法:

private void AddEnvironmentVariableDefinition(string variableName, string defName, string defaultValue = "0")
{
string value = System.Environment.GetEnvironmentVariable(variableName) ?? defaultValue;
PublicDefinitions.Add(String.Format("{0}={1}", defName, value));
}

关于c++ - 是否可以在构建时为 Unreal 项目定义预处理器指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74275568/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com