extconf.rb:如何根据头文件更改生成生成文件目标

extconf.rb: How do I generate makefile targets dependent upon header file changes?

本文关键字:文件 目标 rb 何根 extconf      更新时间:2023-10-16

在我的extconf.rb中,我有

$srcs = %w{foo.cpp bar.cpp}
$objs = %w{foo bar} 

其中每个都依赖于多个头文件。如果我touch foo.cpptouch bar.cpp,然后执行rake compile,它会重新编译相应的对象文件。

但是,触摸.h文件显然不会产生相同的效果。我不记得这是我使用extconf.rb的症状,还是只是用C/C++编码的事实。

有什么方法可以指示extconf.rb编写一个知道这些头文件的生成文件吗?

你不会直接在extconf.rb中执行此操作;无论出于何种原因,mkmf使用一个名为 depend 的单独文件来指定这些东西。 您将所有依赖项放在与手动编写生成文件相同的形式中;因此,对于使用 client.hwombat.h 的文件foo.cpp,您需要将以下行添加到depend

foo.o: client.h wombat.h`

在构建Makefile的过程中,mkmf会将该文件的内容复制到Makefile中,使这些规则作为构建过程的一部分得到遵守。