以下三行在Makefile中做了什么?
1. SRCS:c=o
2. case "$*" in
3. support)
OBJS=$(SRCS:c=o)
%.o: %.c
case "$*" in \
support) $(CC) $(CCOPT) -c $(OPTS) $*.c ;; \
*) $(PCC) $(PCCOPT) -c $(OPTS) $*.c ;; \
esac
如果您需要更多信息,请与我们联系。
答案 0 :(得分:2)
OBJS=$(SRCS:c=o)
是Substitution Reference:
当我们说“在一个单词的末尾”时,我们的意思是必须出现一个后跟空格或在值的末尾才能被替换;值的其他出现不会改变。例如:
foo := a.o b.o c.o bar := $(foo:.o=.c)
将'bar'设为'a.c b.c c.c'。请参阅设置变量。
...
这一位:
case "$*" in \
support) $(CC) $(CCOPT) -c $(OPTS) $*.c ;; \
*) $(PCC) $(PCCOPT) -c $(OPTS) $*.c ;; \
esac
是%.o: %.c
目标的配方,是一个shell脚本。
请参阅Bash Reference Manual和POSIX spec中的case
。
support)
和*)
位是case
语句的一部分(就像esac
)。