首先,标题非常通用,因为有很多方法可以解决这个问题。但是,我正在寻找一种干净整洁的方式。
情况:
我有两个相等的目标文件foo.o和foo-pi.o,后者与位置无关(用 编译-fPIC)。两者都取决于foo.h和bar.h。
问题:
我如何在没有代码重复的情况下声明 all foo*.oto的依赖关系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我想避免的重复提及。