2012-07-25 63 views
3

我正在使用一对boost库并使用下面的规则来生成自动依赖关系。我认为boost头文件确实减慢了编译的速度,因为如果没有Makefile中的依赖项,那编译项目的速度就要快10倍。有没有办法提高生成的依赖关系的速度?自动生成的依赖关系导致编译速度缓慢

%.o: %.cc 
    $(CXX) $(CFLAGS) $(INCLUDES) -MD -c $< -o [email protected] 
    @mv $*.d .deps/ 
    @cp .deps/$*.d .deps/$*.tmp 
    @sed -e 's;#.*;;' -e 's;^[^:]*: *;;' -e 's; *\\$$;;' \ 
    -e '/^$$/d' -e 's;$$; :;' < .deps/$*.tmp >> .deps/$*.d 
    @rm .deps/$*.tmp 
+3

由于您可能不会更改提升标题,因此没有理由将它们添加为依赖项。所以你可以寻找一种方法来排除boost头文件(也可能是其他系统头文件)。 – 2012-07-25 06:58:44

+0

(删除了我的答案,因为我意识到它并不真正与您的具体问题有关)。就我个人而言,我写了一个自定义Python脚本,它在<1秒内扫描我的'src'并写入一个非常简单的(无*规则或由GCC生成的依赖项)Makefile。 – Oleg2718281828 2012-07-25 08:49:04

+0

我在ruby中做了同样的事情来为我的耙构建生成依赖文件。它只是省略<>中的所有括号。 – 2012-07-25 08:56:06

回答

2

由于您可能不会更改boost头文件,因此没有理由将它们添加为依赖项。通过使用-MMD来生成依赖文件,系统头文件应该被忽略,因此你的依赖文件应该变小,这意味着必须扫描更少的硬盘来查看文件是否仍然是最新的等等。当然,你有以包含<>不是“”的标题。