我正在尝试构建Atmel BitCloud v3.2示例应用程序在Linux和Mac中与makefile闪烁。在Windows中一切正常。但是在类似Posix的系统中,以下行不起作用:Makefile规则未在Linux中执行
all: directories images root_files size
$(OBJ_PATH)/%.o: $(SRCS)
$(CC) $(CFLAGS) $(filter %/$(subst .o,.c,$(notdir [email protected])), $(SRCS)) -o [email protected]
因此,编译器未被执行且目标文件未被创建。其结果是接头显示错误消息,例如
avr-gcc: error: All_MegaRf_Atmega256rfr2_8Mhz_Gcc/Obj/blink.o: No such file or directory
线$(OBJ_PATH)/%.o: $(SRCS)
是问题的根源。
如果我用$(OBJ_PATH)/blink.o: ../../src/blink.c
这样的黑色替换它,则相应的对象文件正在成功创建。
我甚至能够通过手动设置构建目标如下构建整个应用程序:
$(OBJ_PATH)/blink.o: ../../src/blink.c
$(CC) $(CFLAGS) $(filter %/$(subst .o,.c,$(notdir [email protected])), $(SRCS)) -o [email protected]
$(OBJ_PATH)/stdPdsEvents.o: ../../../../BitCloud/Components/PersistDataServer/std/src/stdPdsEvents.c
$(CC) $(CFLAGS) $(filter %/$(subst .o,.c,$(notdir [email protected])), $(SRCS)) -o [email protected]
在项目的所有.c文件。
的,另一方面源列表的定义如下:
SRCS = \
../../src/blink.c \
../../../../BitCloud/Components/PersistDataServer/std/src/stdPdsMemAccess.c \
../../../../BitCloud/Components/PersistDataServer/std/src/stdPdsTimer.c \
谁能帮我弄清楚为什么是模式匹配不工作,如何恢复它。
注:类似的话题已经被打开here,但笔者次找到了自己的解决方案并没有在我看来很好地解释,所以我没能解决我的问题。
@MichaëlAzevedo:你最近的编辑似乎已经删除了语义上重要的空白。请不要使用您不熟悉的语言编辑代码。谢谢。 – tripleee
@tripleee我的坏,我试图通过代码缩进来替换背包逃脱。我应该回到前一个吗? –
@MichaëlAzevedo不需要;我已经恢复了丢失的标签。感谢您做出如此快速的回应。 – tripleee