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