我正在开展一个即将变大的大型项目。在此之前,我想解决的一个问题是构建速度。
过去我们使用Single Compilation Unit / Unity Builds来大大提高构建速度。详情请见http://buffered.io/posts/the-magic-of-unity-builds/
本质上,您创建一个包含多个#include other.cpp
的.cpp文件e.g。 scu.cpp的内容
#include apple.cpp
#include banana.cpp
#include cherry.cpp
.....
创建一个scu.obj。这降低了构建速度,因为它减少了文件I / O.
但有一些不利因素
另一个坏处是,开发人员可能需要手动维护scu.cpp(但这对我们来说是自动化的,所以不用担心)。
由于这些缺点,我们离开了SCU。但是我很想把它带回去,因为构建速度提升真的诱人(减少50-75%)。
有没有办法避免这些冲突?我测试了
scu.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
........
源于名称空间中的#include。
还有其他选择吗?还有其他解决方案吗?
这个主题建议不(不幸的是)
用于测试非SCU解决方案的单独构建很容易实现。但在我们的组织内不赞成。即