команда makefile notdir - PullRequest
       13

команда makefile notdir

1 голос
/ 29 декабря 2011

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

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

с помощью этой команды:

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

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

Ответы [ 2 ]

4 голосов
/ 29 декабря 2011

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

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

$(addprefix $(OBJDIR),$(notdir $(SOURCECODE:.c=.o)))
4 голосов
/ 29 декабря 2011
$(addprefix $(OBJDIR),$(notdir $(SOURCECODE:.c=.o)))
...