使参数传递和多个 .PHONY 目标
make argument passing and multiple .PHONY targets
这个 Makefile .PHONY 包含两个目标:clean 和 cleanx。
当我输入 "make clean" 或 "make cleanx" 时工作正常。但是,当我在命令行中执行 "make" 时,它的行为就像 "make clean"。
我预计 "make" 不应该做任何事情。一定是我理解错了。您能否解释一下发生了什么以及如何让 "make" 在这种情况下什么都不做?
顺便说一句,这个通用的 makefile 接受任何 ~.c 或 ~.cpp 文件(w/o 扩展名)并制作它们。
CC = gcc
CFLAGS = -x c -g -std=gnu99
# The following part of the makefile is generic. it can be used
# to build any executable just by changing the definition above
%: %.c
@echo Making $@.c file
$(CC) -o $@ $(CFLAGS) $<
%: %.cpp
@echo "Making $@.cpp file"
$(CC) -o $@ $(CFLAGS) $<
.PHONY: cleanx clean
cleanx:
rm -f *.exe *.o
clean:
rm -f *.o
提前致谢!
(债务人)<><
始终将 运行s 作为 makefile 中定义的第一个显式目标,除非您在命令行中指定了特定目标。
在这种情况下,列出的第一个显式目标是 cleanx
,因此如果您不提供任何参数,它将是 运行。
如果你想让它默认运行一个不同的目标,先定义那个。
例如:
.PHONY: all
all:
.PHONY: cleanx clean
cleanx:
rm -f *.exe *.o
clean:
rm -f *.o
这里因为 all
没有先决条件并且是 PHONY,所以它不会做任何事情。
这个 Makefile .PHONY 包含两个目标:clean 和 cleanx。 当我输入 "make clean" 或 "make cleanx" 时工作正常。但是,当我在命令行中执行 "make" 时,它的行为就像 "make clean"。 我预计 "make" 不应该做任何事情。一定是我理解错了。您能否解释一下发生了什么以及如何让 "make" 在这种情况下什么都不做? 顺便说一句,这个通用的 makefile 接受任何 ~.c 或 ~.cpp 文件(w/o 扩展名)并制作它们。
CC = gcc
CFLAGS = -x c -g -std=gnu99
# The following part of the makefile is generic. it can be used
# to build any executable just by changing the definition above
%: %.c
@echo Making $@.c file
$(CC) -o $@ $(CFLAGS) $<
%: %.cpp
@echo "Making $@.cpp file"
$(CC) -o $@ $(CFLAGS) $<
.PHONY: cleanx clean
cleanx:
rm -f *.exe *.o
clean:
rm -f *.o
提前致谢! (债务人)<><
始终将 运行s 作为 makefile 中定义的第一个显式目标,除非您在命令行中指定了特定目标。
在这种情况下,列出的第一个显式目标是 cleanx
,因此如果您不提供任何参数,它将是 运行。
如果你想让它默认运行一个不同的目标,先定义那个。
例如:
.PHONY: all
all:
.PHONY: cleanx clean
cleanx:
rm -f *.exe *.o
clean:
rm -f *.o
这里因为 all
没有先决条件并且是 PHONY,所以它不会做任何事情。