我目前正在尝试围绕 Scons 创建一个构建系统,它将使用 Boost Wave 驱动程序作为自定义 C++ 代码预处理器。预处理后,代码使用 MSVC 编译。目前,我从 Sconscript 文件中为 Scons 看到的每个源文件启动 wave。这可行,但有一个问题 - 它非常慢,因为它没有利用 Scons 编译缓存。
您如何建议将自定义预处理步骤集成到 SCons 构建系统中,以使用编译缓存的方式?显然,我还需要适当的#include 依赖项扫描、并行编译等。我对 SCons 的经验不是很丰富,所以我正在寻找可以为我指明正确方向的人。
我目前的两个研究领域是:
- 找到某种方法来手动调用 put/retrieve 缓存函数,但这是有风险的——我不想用无效条目污染缓存。
- 创建一个自定义工具/pseudobuilder/something,这将允许我执行两个命令。或者尝试让 scons 使用两个工具/pseudobuilders。这似乎很复杂。
- Tom Tanner 的回答,似乎受到未正确检测到 #include 依赖项的影响。