2011-12-29 2 views
1

Мои исходные файлы не находятся внутри одного каталога, который мне нужно делать ../ или ../../.makefile notdir command

после этого, мне нужно изменить имя исходного файла, например: ../ex/test.c to obj/test.o

с этим: команда:

$(OBJDIR) $(notdir $(SOURCECODE:.c=.o)) 

однако только первое имя файла в $(SOURCECODE) (../ex/test.c) правильно переименован в OBJ/тест .o, остальные все выглядят как *.o, без информации о каталоге.

ответ

4

Это потому, что вы предварять $(OBJDIR) в список, как это: obj/ + foo.c bar.c baz.c дает obj/foo.c bar.c baz.c, который не то, что вы хотите.

Чтобы добавить каталог в каждый файл в список вашего использования addprefix функции:

$(addprefix $(OBJDIR),$(notdir $(SOURCECODE:.c=.o))) 
4
$(addprefix $(OBJDIR),$(notdir $(SOURCECODE:.c=.o))) 
+0

О, вы были быстрее. :) –

+0

@ ЭльдарАбуласимов: Но вы написали лучшее объяснение :-). +1. – thiton

Смежные вопросы