最小构建依赖树

时间:2009-09-22 14:41:48

标签: c++ build-process dependencies

我目前正在使用IDE为多个平台(win32,windows mobile,symbian等)构建c ++项目。此IDE不保留构建依赖项列表,只是每次都重建整个项目。 这浪费了我们很多时间,这使我们考虑实施更智能的构建过程: 只有在修改日期已更新或者包含它们(递归)的标题已更新时,才会重新编译cpp文件。

我找到了一个名为cinclude2dot.pl的perl脚本,它输出包含项目目录中的依赖项。 graphviz可以使用此输出来创建依赖关系树。 问题是:(a)这个脚本不可靠(它不解析“/ *”注释),(b)它在一个目录上运行,我们的头和源放在多个目录中。

我的问题: 1.是否有类似的脚本/批处理/程序可以更有效地输出标头依赖项? 2.在编写“更智能”的构建过程时,是否还有修改日期以及包含我应该考虑的依赖项?

其他见解也会很棒! 谢谢!

4 个答案:

答案 0 :(得分:2)

如果您的IDE使用GCC构建项目,那么您可以使用GCC的内置依赖项生成。它输出适合包含在标准makefile中的规则。

通过在GCC命令行上传递-M系列标志来激活它们。请参阅documentation in the GCC manual

然而,也许值得考虑切换到更好的IDE(如果可能的话),可以为你做这类事情,而不是花时间尝试将功能嫁接到似乎是动力不足的IDE。< / p>

答案 1 :(得分:1)

gcc可以使用-MM选项执行此操作,然后您可以在makefile中使用这些依赖项,如here所述。即使您不想使用gcc编译实际项目,也可以使用它来计算依赖关系树。

答案 2 :(得分:0)

我还注意到cl.exe中的/ showIncludes选项(我正在使用VS2008 for win32并赢取移动调试版本) “问题”是cl.exe编译我的.cpp,我只想让它显示#include语句。 是否有任何标志导致cl.exe无法编译代码,只显示包含列表?

答案 3 :(得分:0)

感谢您的帮助!

我找到了一个名为“fastdep”的开源程序。它的记录很少,但在玩了几个小时后,我终于得到了我需要的东西。