Сделать правило вывода для файлов в папке

Я использую GNU make, я хочу, чтобы мои исходные и объектные файлы находились в разных папках.

В качестве первого шага я хочу, чтобы исходные файлы были в корне папки моего проекта, а объектные файлы - в подпапке (скажем, Debug/).

Правило вывода будет следующим:

.ss.obj:
    echo Assembling $*.ss...
    $(ASSEMBLY) $(2210_ASSEMBLY_FLAGS) $*.ss -o Debug\$*.obj 

но в этом случае make все время перестраивает все файлы, поскольку в корневой папке нет.obj.

Есть ли способ включить папку для цели в строку .ss.obj?

Я также попробовал:

$(OBJS_WITH_PATH):$(SRC)    
    echo Assembling $<...
    $(ASSEMBLY) $(ASSEMBLY_FLAGS) $< -o $@ 

с $(SRC) как список всех моих источников, $(OBJS_WITH_PATH) построен таким образом:

OBJS_WITH_PATH = $(patsubst %.ss,Debug\\%.obj,$(SRC))

но это создает зависимость от всех исходных файлов для всех объектных файлов.

Я хотел бы изменить правило вывода, которое я написал первым, чтобы Debug/*.obj файлы. Что это говорит сейчас no rule to make target Debug/asdfasdf.obj,

1 ответ

Решение

Используйте правила шаблона:

Debug/%.obj : %.ss
Другие вопросы по тегам