我有这个Makefile
$(MAIN) : $(OBJECTS)
$(OBJECTS) : %.c
compile file
我想使用printf
来打印需要编译的文件,例如“ compiling”,如果要在每个编译的末尾编译文件,则要使用“ done”:
Compiling
file1.c
file2.c
file3.c
Done
我尝试使用shell中的if
或makefile中的ifeq
之类的句子
但是我需要一个变量,如果我不知道为什么,makefile不允许我在a内部更改变量的值。我该如何存档?
答案 0 :(得分:0)
我想这就是你想要的:
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 $<
答案 1 :(得分:0)
我解决了将变量MODE
初始化为0并将我的makefile分成两部分的问题,一部分检查是否已对某些内容进行了修改,在这种情况下,请更新失败,然后打印我的消息,然后执行{ {1}},我在其中执行普通的makefile,以更新所需的所有内容
答案 2 :(得分:0)
我同样需要在开始构建一堆PDF文件时打印一条消息,然后跳转以生成另一堆PNG文件。我使用了两个.INTERMEDIATE目标来防止d => `test: ${d.object.extraProps.occupancy}`
被.PHONY目标文件“饿”(期待更新)。
该消息仅打印一次。
make
这在GNU make手册https://www.gnu.org/software/make/manual/html_node/Special-Targets.html
中有解释