У меня есть объектные файлы с путями, которые могут выглядеть следующим образом:
'../../src/foo/bar.c'
Я бы хотел, чтобы они выводились на
'build/src/foo/bar.o'
В настоящее время используется:
COBJS := $(notdir $(CFILES))
COBJS := $(patsubst %,$(BUILD)%.o,$(COBJS))
Я могу достичь
'build/bar.o'
Это проблематично, если любые две библиотеки / проекта содержат одно и то же имя класса.
Итак, вопрос в том, как можно удалить несколько «../» из пути в Make. Я пробовал очевидные и наивные подходы безрезультатно.
Обновите, следующее будет точно соответствовать ../../ и заменит его на остальные. Это идеально, за исключением того, что это специфично для ../../. Просто нужно, чтобы оно совпадало с любым количеством ../../
COBJS := $(CFILES:../../%=%)
Обновление
РЕШЕНО, только три репутации стесняются опубликовать свой ответ.
COBJS := $(subst ../,,$(CFILES))