尝试在makefile
中找到打印信息的简单方法。在底部显示我的简单makefile
。
行$(info aaa)
打印aaa
罚款。
但是行echo 'aaa'
会产生错误*** missing separator
是否可以使用makefile
中的echo打印信息?
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.
答案 0 :(得分:3)
您可以在Makefile
:
a = $(shell echo abc)
$(info $(a))
答案 1 :(得分:2)
您可以创建sayhello
目标:
.PHONY: sayhello
sayhello:
echo 'aaa'
现在您可以运行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.
答案 2 :(得分:1)
Makefile不是逐行执行的,而是关于规则依赖性。您的echo语句不属于规则,但make
认为它应该是,因此错误消息。
我想生成一个独立于任何依赖关系的常规输出,$(info ...)
(或$(warning ...)
)是可行的方法。