1

我将 rake 用于 C++ 项目。我正在使用 gcc -MM -MF 自动生成依赖项,并使用“import”来导入它们。到目前为止,一切都很好。

然而,rake 并没有在应该重建“depends.mf”文件的时候重建它。Ruby 文档中的示例是错误的:

file ".depends.mf" => [SRC_LIST] do |t|
  sh "makedepend -f- -- #{CFLAGS} -- #{t.prerequisites} > #{t.name}" 
end

import ".depends.mf" 

当 SRC_LIST包含的任何文件也发生更改时,需要重建 .depends.mf 文件。例如,假设 SRC_LIST 是单个文件 a.cpp,并且 #includes a.hpp。如果我们修改a.hpp,我们可能会将其修改为#include new files,因此我们需要重新制作.depends.mf,但上面的行不会这样做。

所以我们真的希望 .depends.mf 依赖于源文件所依赖的相同的东西。这些东西都列在 .depends.mf 中。很容易破坏 .depends.mf 以提及它自己(gcc -MT 'foo.o foo.mf'),但这不起作用:rake 仅在阅读之前决定是否重建 .depends.mf 。它不会在阅读后重建它。

所以我该怎么做?切换到 SCONS?;)

4

1 回答 1

2

答案很简单:

Rake::MakefileLoader.new.load(".depends.mf") if File.file?(".depends.mf")
于 2012-05-18T14:01:09.483 回答