试图找到在makefile. 底部显示了我的简单makefile.
线条 $(info aaa)打印aaa良好。但是线 echo 'aaa'会产生错误*** missing separator
是否可以使用 echo in 打印信息makefile?
CC=gcc
CFLAGS=-I.
DEPS = f1.h,hellomake.h
echo 'aaa'
$(info aaa)
%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
hellomake: hellomake.o hellofunc.o f1.o
gcc -o hellomake hellomake.o hellofunc.o f1.o -I.
Run Code Online (Sandbox Code Playgroud)
Makefile 不是逐行执行的,而是关于规则依赖性的。您的 echo 语句不属于规则,但make认为它应该,因此是错误消息。
我想生成一个独立于任何依赖项的通用输出,$(info ...)(或$(warning ...))是要走的路。
您可以创建一个sayhello目标:
.PHONY: sayhello
sayhello:
echo 'aaa'
Run Code Online (Sandbox Code Playgroud)
现在您可以运行make sayhello以执行echo 'aaa'命令。
虚假目标不是真正的文件名;相反,它只是在您提出明确请求时要执行的配方的名称。
https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html
该sayhello目标也可以作为一个子程序中的hellomake目标:
hellomake: hellomake.o hellofunc.o f1.o sayhello
gcc -o hellomake hellomake.o hellofunc.o f1.o -I.
Run Code Online (Sandbox Code Playgroud)