C Makefile:将新规则添加到其他Makefile中包含的规则中
我有两个makefile:C Makefile:将新规则添加到其他Makefile中包含的规则中,c,makefile,C,Makefile,我有两个makefile: 生成文件 Makefile.common 在Makefile中,它的末尾包括Makefile.common 我想要的是在进行调试时添加C\u源文件+=uart.C。我在Makefile.common中看到了一系列debug:target,所以我刚刚在include station之前添加了debug:C\u SOURCE\u FILES+=uart.C,但它抱怨: Make没有将uart.c编译为uart.o,但它需要uart.o链接 如何向Makefile.co
C\u源文件+=uart.C
。我在Makefile.common
中看到了一系列debug:
target,所以我刚刚在include station之前添加了debug:C\u SOURCE\u FILES+=uart.C
,但它抱怨:
Make没有将uart.c编译为uart.o,但它需要uart.o链接
如何向Makefile.common中定义的目标插入新规则?哦,我想出来了:
ifeq ($(MAKECMDGOALS),debug) # template for conditional rules
C_SOURCE_FILES += uart.c
endif
uart.c
已列在第20行的c\u源文件中。(添加debug:C_SOURCE_FILES+=uart.C
行只会将其添加到记录的debug
目标的文件列表中。)错误到底是什么?很抱歉,该示例不应在C_SOURCE_文件中包含uart.C。我只是想弄明白,见下文。谢谢你。这与另一次尝试没有什么区别,之所以有效,是因为这次你是在Makefile.common中定义对象变量之前附加到源变量。如果你用你最初的尝试来代替这个,你会发现它也很有效。如果您指定多个目标,此答案将停止工作。是的,您是对的,我知道更多目标将无法工作。我认为更好的解决方法是添加一个特定变量,如DEBUG_C_SOURCE_FILES+=uart.C,并将该变量添加到目标DEBUG: