【问题标题】:Automatically generated dependencies result in slow compilation自动生成的依赖导致编译缓慢
【发布时间】:2012-07-23 13:13:05
【问题描述】:

我正在使用几个 boost 库并使用下面的规则来生成自动依赖项。我认为 boost headers 确实减慢了编译速度,因为没有 Makefile 中包含的依赖项,编译项目的速度大约快了 10 倍。有没有办法通过生成的依赖项来提高速度?

%.o: %.cc
  $(CXX) $(CFLAGS) $(INCLUDES) -MD -c $< -o $@
  @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

【问题讨论】:

  • 由于您可能不会更改 boost 标头,因此没有理由将它们添加为依赖项。因此,您可以寻找一种方法来排除 boost 标头(也可能是其他系统标头)。
  • (删除了我的答案,因为我意识到它与您的具体问题并不真正相关)。就我个人而言,我编写了一个自定义 Python 脚本,它可以在不到 1 秒的时间内扫描我的 src 并编写一个非常简单的(没有 * 规则,或 GCC 生成依赖项)Makefile。
  • 我在 ruby​​ 中做了同样的事情来为我的 rake 构建生成依赖文件。它只是省略了 括号中的所有内容。

标签: c++ boost dependencies makefile


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-10-03
    • 2019-12-05
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多