在makefile中回声

问题描述 投票:4回答:3

试图找到一种简单的方式来打印信息,在这里,我想说的是,我想在这里找到一种简单的方式来打印信息。makefile. 在底部显示了我的简单 makefile.

线路 $(info aaa) 印花 aaa 罚款.但行 echo 'aaa' 出错 *** missing separator

能否用echo打印信息 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.
makefile gnu-make
3个回答
2
投票

Makefile不是逐行执行的,而是关于规则的依赖性。你的echo语句并不属于一个规则,而是属于 make 认为应该如此,因此出现了错误信息。

如果你想生成一个独立于任何依赖关系的通用输出,那么你可以使用这个方法。$(info ...) (或 $(warning ...))是最好的方法。


4
投票

你可以在你的 Makefile:

a = $(shell echo abc)
$(info $(a))

2
投票

您可以创建一个 sayhello 目标。

.PHONY: sayhello
sayhello:
        echo 'aaa'

现在你可以运行 make sayhello 来执行 echo 'aaa' 命令。

假目标是指一个并不是真正的文件名,而只是当你提出明确请求时要执行的配方的名称。

https:/www.gnu.orgsoftwaremakemanualhtml_nodePhony-Targets.html

sayhello 靶子也可以作为 子程序hellomake 目标:

hellomake: hellomake.o hellofunc.o f1.o sayhello
        gcc -o hellomake hellomake.o hellofunc.o f1.o -I.
© www.soinside.com 2019 - 2024. All rights reserved.