有没有办法阻止Boost.Build递归扫描#include指令的头文件?

Wil*_*ker 5 c++ dependencies boost-build

有没有办法限制Boost.Build递归扫描#include指令到特定目录或目录集的头文件?即我希望它仅以递归方式扫描项目中的头文件.我知道他们的外部依赖关系不会改变(并且Boost和Qt他们相当大).我最终在依赖树中有大约50,000个目标,这需要一段时间来处理(即使没有实际更改文件,也会导致1-2分钟的构建时间).

到目前为止我发现的唯一解决方案是利用INCLUDE环境变量(我正在使用MSVC) - 这意味着Boost.Build不需要被告知包含路径(我正在使用该功能),因此不扫描它们.这看起来有点像黑客.

我觉得我必须遗漏一些明显的东西,因为我无法找到遇到类似问题的其他人,即使我几乎立即遇到了这个问题.我最近的就在这里.

从调试输出(bjam -d 3)判断它还会多次扫描大多数头文件...我不知道这是否意味着它们被多次添加为依赖项,但肯定是加载一个文件和扫描整个内容必须加起来?

如果我可以告诉它不要打扰扫描一个特定的目录或一组目录,我可以保证头文件不会改变,那将是完美的.

Wil*_*ker 3

这个问题也发布在 Boost 邮件列表上,我们在这里得到了答案:http ://lists.boost.org/boost-build/2009/04/21734.php 。

所以到目前为止,答案似乎是,至少开箱即用的 Boost.Build 没有这个功能,解决方案是根据您的需求定制 Boost.Build,这有一定的意义。

然而,我仍然很好奇为什么这对人们来说不是一个更常见的问题。我发现缓存依赖项会减少时间,但如果我们扫描所有外部库,我们最终会得到一个巨大的依赖项树,其中大部分是多余的?当我从事一个项目时,我根本不会经常更改第三方库,为它们的依赖项检查付费似乎是一种耻辱。