首先,标题非常通用,因为有很多方法可以解决这个问题。但是,我正在寻找一种干净整洁的方式。
情况:
我有两个相等的目标文件foo.o
和foo-pi.o
,后者与位置无关(用 编译-fPIC
)。两者都取决于foo.h
和bar.h
。
问题:
我如何在没有代码重复的情况下声明 all foo*.o
to的依赖关系bar.h
?
到目前为止的解决方案:
$(shell bash -c 'echo -ne foo{-pi,}.o'): bar.h
$(addsuffix .o, $(addprefix fo, o-pi o)): bar.h
foo.o foo-pi.o: bar.h
第一个解决方案在不支持的系统上是不可移植的bash
,第二个是一个肮脏的解决方案,因为我不知道如何在addprefix
. 第三种解决方案包括foo
我想避免的重复提及。