сделать правило вывода для файлов в папке - PullRequest
3 голосов
/ 23 апреля 2010

Я использую 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 Ответ

3 голосов
/ 23 апреля 2010

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

Debug/%.obj : %.ss
...