在Unity构建中创建文件作用域的其他方法 我试图使用Unity构建来缩短Windows上C++项目的构建时间。我遇到的几个问题之一是单文件范围问题
一旦所有源代码都包含在单个源文件中,它们就共享相同的文件范围。所有使用相同名称的本地定义符号都将重复,并导致编译错误在Unity构建中创建文件作用域的其他方法 我试图使用Unity构建来缩短Windows上C++项目的构建时间。我遇到的几个问题之一是单文件范围问题,c++,build,C++,Build,一旦所有源代码都包含在单个源文件中,它们就共享相同的文件范围。所有使用相同名称的本地定义符号都将重复,并导致编译错误 目前,我必须用文件后缀更改每个重复的名称,以避免重复。但我认为可能有更好的解决方案。我想与大家分享我目前的解决方案 在生成unity\u build\u source\u.cpp文件时,定义一个unity\u build宏,并用宏包装每个包含源代码: // unity_build_souce file, automatically generated, do not edit m
目前,我必须用文件后缀更改每个重复的名称,以避免重复。但我认为可能有更好的解决方案。我想与大家分享我目前的解决方案
unity\u build\u source\u.cpp
文件时,定义一个unity\u build
宏,并用宏包装每个包含源代码:
// unity_build_souce file, automatically generated, do not edit manually.
#define UNITYBUILD_CONCATENATE_DETAIL(x, y) x##y
#define UNITYBUILD_CONCATENATE(x, y) UNITYBUILD_CONCATENATE_DETAIL(x, y)
#define UNITYBUILD_MAKE_UNIQUE(x) UNITYBUILD_CONCATENATE(x, _UNITYBUILD_COUNTER)
#define UNITY_BUILD
// for each source code
#define _UNITY_BUILD_COUNTER 1
#include <path/to/source1.cpp>
#undef _UNITY_BUILD_COUNTER
#define _UNITY_BUILD_COUNTER 2
#include <path/to/source2.cpp>
#undef _UNITY_BUILD_COUNTER
// ...
我知道这个解决方案仍然很难看。与手动更改每个重复的符号相比,它使旧名称保持原样。我想分享我当前的解决方案
unity\u build\u source\u.cpp
文件时,定义一个unity\u build
宏,并用宏包装每个包含源代码:
// unity_build_souce file, automatically generated, do not edit manually.
#define UNITYBUILD_CONCATENATE_DETAIL(x, y) x##y
#define UNITYBUILD_CONCATENATE(x, y) UNITYBUILD_CONCATENATE_DETAIL(x, y)
#define UNITYBUILD_MAKE_UNIQUE(x) UNITYBUILD_CONCATENATE(x, _UNITYBUILD_COUNTER)
#define UNITY_BUILD
// for each source code
#define _UNITY_BUILD_COUNTER 1
#include <path/to/source1.cpp>
#undef _UNITY_BUILD_COUNTER
#define _UNITY_BUILD_COUNTER 2
#include <path/to/source2.cpp>
#undef _UNITY_BUILD_COUNTER
// ...