Во-первых, заголовок очень общий, потому что есть всего несколько способов, как это возможно решить. Тем не менее, я ищу чистый и аккуратный способ.Makefile: расширения зависимостей
Ситуация:
У меня есть два одинаковых объектные файлы foo.o
и foo-pi.o
, последний из которых является позиционно-независимым (скомпилирован с -fPIC
). Оба значения зависят от foo.h
и bar.h
.
Проблема:
Как, без дублирования кода, объявить зависимость всех foo*.o
к 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
, которого я хочу избежать.
Вместо использования переименования для различения кода PIC и non-PIC рассмотрите возможность размещения двух типов объектов в разных подкаталогах (например, obj/'и' obj.PIC/') и оставляя имена одинаковыми. Это может сделать многое из того, что вы пытаетесь сделать проще ... – twalberg
Правда, но спецификация этого не позволяет. – Danyel