Makefile 在一条规则内只执行一次 echo
Makefile execute echo only one time inside a rule
我有这个 Makefile
$(MAIN) : $(OBJECTS)
$(OBJECTS) : %.c
compile file
我想使用 printf
打印类似 "compiling" 的文件,只要文件需要编译,如果文件在每次编译结束时都已编译,则 "done" 例如:
Compiling
file1.c
file2.c
file3.c
Done
我尝试使用 shell 中的 if
或 makefile 中的 ifeq
这样的句子
但我需要一个变量,如果我不知道为什么,makefile 不允许我更改 a 中变量的值。我该如何存档?
我想这就是你想要的:
OBJECTS := file1.o file2.o file3.o
.PHONY: all compiling
all : $(OBJECTS)
@echo Done
compiling:
@echo Compiling
$(OBJECTS): file%.o : file%.c compiling
@echo $<
@compile $<
我解决了将变量 MODE
初始化为 0 并将我的 makefile 分为两部分的问题,一部分检查是否已修改某些内容,在这种情况下,而不是更新失败,我打印我的消息,然后做 $(MAKE) MODE=1
我执行一个普通的 makefile 来更新所有需要的东西
感谢 Renauld Pacalet 提出的问题
我有同样的需求,在开始构建一堆 PDF 文件时打印一条消息,然后跳转到生成另一堆 PNG 文件。我使用了两个 .INTERMEDIATE 目标来防止 make
成为 .PHONY 目标文件的 "hungry"(期待更新)。
该消息将只打印一次。
CC=gcc
OBJECTS := file1.o file2.o file3.o
.PHONY: all
all: $(OBJECTS) msg_compiling
$(OBJECTS): file%.o : file%.c msg_compiling
$(CC) -c -o $@ $<
.INTERMEDIATE: msg_compiling
msg_compiling:
@printf "\n Compiling \n"
这在 GNU make 手册中有解释https://www.gnu.org/software/make/manual/html_node/Special-Targets.html
我有这个 Makefile
$(MAIN) : $(OBJECTS)
$(OBJECTS) : %.c
compile file
我想使用 printf
打印类似 "compiling" 的文件,只要文件需要编译,如果文件在每次编译结束时都已编译,则 "done" 例如:
Compiling
file1.c
file2.c
file3.c
Done
我尝试使用 shell 中的 if
或 makefile 中的 ifeq
这样的句子
但我需要一个变量,如果我不知道为什么,makefile 不允许我更改 a 中变量的值。我该如何存档?
我想这就是你想要的:
OBJECTS := file1.o file2.o file3.o
.PHONY: all compiling
all : $(OBJECTS)
@echo Done
compiling:
@echo Compiling
$(OBJECTS): file%.o : file%.c compiling
@echo $<
@compile $<
我解决了将变量 MODE
初始化为 0 并将我的 makefile 分为两部分的问题,一部分检查是否已修改某些内容,在这种情况下,而不是更新失败,我打印我的消息,然后做 $(MAKE) MODE=1
我执行一个普通的 makefile 来更新所有需要的东西
感谢 Renauld Pacalet 提出的问题
我有同样的需求,在开始构建一堆 PDF 文件时打印一条消息,然后跳转到生成另一堆 PNG 文件。我使用了两个 .INTERMEDIATE 目标来防止 make
成为 .PHONY 目标文件的 "hungry"(期待更新)。
该消息将只打印一次。
CC=gcc
OBJECTS := file1.o file2.o file3.o
.PHONY: all
all: $(OBJECTS) msg_compiling
$(OBJECTS): file%.o : file%.c msg_compiling
$(CC) -c -o $@ $<
.INTERMEDIATE: msg_compiling
msg_compiling:
@printf "\n Compiling \n"
这在 GNU make 手册中有解释https://www.gnu.org/software/make/manual/html_node/Special-Targets.html