在makefile中回显

时间:2015-11-24 08:49:34

标签: c++ makefile

尝试在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.

3 个答案:

答案 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 ...))是可行的方法。