makefile中的Echo
试图找到在makefile中的Echo,makefile,gnu-make,Makefile,Gnu Make,试图找到在makefile中打印信息的简单方法。底部显示了我的简单makefile 行$(信息aaa)打印aaa精细。 但是行回显“aaa”创建错误***缺少分隔符 是否可以在makefile中使用echo打印信息 CC=gcc CFLAGS=-I. DEPS = f1.h,hellomake.h echo 'aaa' $(info aaa) %.o: %.c $(DEPS) $(CC) -c -o $@ $< $(CFLAGS) hellomake: helloma
makefile
中打印信息的简单方法。底部显示了我的简单makefile
行$(信息aaa)
打印aaa
精细。
但是行回显“aaa”
创建错误***缺少分隔符
是否可以在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.
CC=gcc
CFLAGS=-I。
DEPS=f1.h,hellomake.h
回声“aaa”
$(信息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。
生成文件不是逐行执行的,而是关于规则依赖关系的。您的echo语句不属于某个规则,但make
认为它应该属于该规则,因此会显示错误消息
如果您希望生成独立于任何依赖项的常规输出,$(info…
(或$(warning…
)是一种方法。您可以在生成文件中使用类似的技巧:
a = $(shell echo abc)
$(info $(a))
您可以创建一个sayhello
目标:
.PHONY: sayhello
sayhello:
echo 'aaa'
hellomake: hellomake.o hellofunc.o f1.o sayhello
gcc -o hellomake hellomake.o hellofunc.o f1.o -I.
现在,您可以运行makesayhello
来执行echo'aaa'
命令
虚假目标不是文件名;相反,它只是当您发出显式请求时要执行的配方的名称
sayhello
目标还可以用作hellomake
目标的子例程:
.PHONY: sayhello
sayhello:
echo 'aaa'
hellomake: hellomake.o hellofunc.o f1.o sayhello
gcc -o hellomake hellomake.o hellofunc.o f1.o -I.
afaik-echo
必须在规则范围内。同意下面的Matthias,您的makefile
不会逐行解释<代码>规则是定义makefile