我的源文件不在一個目錄中,我需要做的../或../../東西。makefile notdir命令
在那之後,我需要例如改變源文件名:../ex/test.c to obj/test.o
與此:命令:
$(OBJDIR) $(notdir $(SOURCECODE:.c=.o))
但是僅第一個文件名在$(SOURCECODE)
(../ex/test.c
)正確重命名爲OBJ /測試.o,其餘全部看起來像*.o
,沒有目錄信息。
我的源文件不在一個目錄中,我需要做的../或../../東西。makefile notdir命令
在那之後,我需要例如改變源文件名:../ex/test.c to obj/test.o
與此:命令:
$(OBJDIR) $(notdir $(SOURCECODE:.c=.o))
但是僅第一個文件名在$(SOURCECODE)
(../ex/test.c
)正確重命名爲OBJ /測試.o,其餘全部看起來像*.o
,沒有目錄信息。
那是因爲你在前面加上$(OBJDIR)
到列表中是:obj/
+ foo.c bar.c baz.c
給obj/foo.c bar.c baz.c
,這是不是你想要的。
到列表中使用添加目錄到每個文件addprefix
功能:
$(addprefix $(OBJDIR),$(notdir $(SOURCECODE:.c=.o)))
$(addprefix $(OBJDIR),$(notdir $(SOURCECODE:.c=.o)))
哦,你快。 :) – 2011-12-29 18:37:58
@EldarAbusalimov:但你寫了更好的解釋:-)。 +1。 – thiton 2011-12-29 18:38:48