C++ 减少单个编译单元/Unity构建的缺点
我正在做一个大项目,这个项目将变得更大。在此之前,我想解决的一个问题是构建速度 在过去,我们使用单个编译单元/Unity构建来大大提高构建速度。详情可在此找到 实际上,您创建了一个.cpp文件,其中包含多个#include other.cpp e、 g.scu.cpp的内容C++ 减少单个编译单元/Unity构建的缺点,c++,performance,build,C++,Performance,Build,我正在做一个大项目,这个项目将变得更大。在此之前,我想解决的一个问题是构建速度 在过去,我们使用单个编译单元/Unity构建来大大提高构建速度。详情可在此找到 实际上,您创建了一个.cpp文件,其中包含多个#include other.cpp e、 g.scu.cpp的内容 #include apple.cpp #include banana.cpp #include cherry.cpp namespace unique_1 { #include apple.cpp } namespace
#include apple.cpp
#include banana.cpp
#include cherry.cpp
namespace unique_1 {
#include apple.cpp
}
namespace unique_2 {
#include banana.cpp
}
namespace unique_3 {
#include cherry.cpp
}
这将创建一个scu.obj。这降低了构建速度,因为它减少了文件I/O
但也有不利之处
- .cpp中的全局变量/函数是共享的,可能会发生冲突
- 开发人员可能会忘记将文件包含在.cpp中,而不受影响
#include apple.cpp
#include banana.cpp
#include cherry.cpp
namespace unique_1 {
#include apple.cpp
}
namespace unique_2 {
#include banana.cpp
}
namespace unique_3 {
#include cherry.cpp
}
但这只会产生错误
error C3083: 'vc_attributes': the symbol to the left of a '::' must be a type
........
源于#包含在名称空间中
还有别的选择吗?还有其他解决办法吗
此线程没有建议(很遗憾)
测试非SCU解决方案的单独构建是很容易实现的。但在我们的组织内,我们并不赞成。i、 e
- 可能在未意识到的情况下破坏SCU/非SCU(直到发生构建破坏)