我正在开发一个包含大量源代码的项目。我想在编译项目时使用makefile创建一个包含特定环境变量的头文件,因为项目有不同的类型。我想在项目的任何地方使用头文件,因为我不想在编译项目时包含一些代码片段,反之亦然。我该怎么办?
答案 0 :(得分:1)
这是一个快速的解决方案。我们的想法是生成一个临时的.h文件,并且只有在事情发生变化时才更新实际的.h文件。这可以防止您每次都重建。
#dummy target that forces another to be run once per make invokation
.FORCE:
#target is run once per make
file.h.gen: .FORCE
echo "FOO=$(FOO)" > $@
echo "BAR=$(BAR)" > $@
#because file.h.gen is always updated, this is run once per make
file.h : file.h.gen
rsync --checksum $< $@
请注意,如果在file.h中修改任何变量,则需要重建所有依赖于它的文件。如果需要,可以将.h文件拆分为多个文件,以提供更好的粒度。例如,您可以为每个变量创建一个头文件,每个源文件只包含它感兴趣的变量头。这样您只需重建所需的文件。