如何编写带有目标“错误”的makefile?
Posted
技术标签:
【中文标题】如何编写带有目标“错误”的makefile?【英文标题】:How to write a makefile with target "errors"? 【发布时间】:2015-03-11 12:57:37 【问题描述】:我需要将目标 errors:
添加到我当前的 makefile 中,以便使用编译器编译多个不同的程序,并打印所有可能出现的错误消息,例如:
error: expected ';' before
在我当前的 makefile 中,我已经设置了 gcc 标志 -Wall
和 -Wextra
(针对目标 all
、debug
)——这足以生成完整的错误消息输出吗?
或者是否需要以更具体的方式设置目标errors
?
编辑:这是我当前Makefile
的一部分:
CC = gcc
CFLAGS = -std=c99 -Wall -Wextra
SRC = test.c // here I want to add more programs, how is this possible?
BIN = test
binary: $(SRC)
$(CC) $(CFLAGS) -o $(BIN) $(SRC) $(LDFLAGS)
all: binary
【问题讨论】:
不清楚你在问什么。请编辑您的问题以显示更多您的Makefile
@BasileStarynkevitch 我想他是在问他是否将 -Wall 和 -Werror 与 make 一起使用,它会为他的代码中的错误生成消息。如果没有,他如何通过编辑 makefile 自己生成这些消息
@codebat:你为什么不能简单地运行make -k
?
没有。 -Wall
和 -Wextra
不会产生任何错误。他们产生警告。如果您的代码不是有效的 C++,而不是启用警告,则会出现错误。如果你的代码不是有效的 C++,你总是会得到错误,你不需要使用一个选项来让编译器告诉你它是无效的。
正如乔纳森所说,总是会报告错误。您也可以使用-Werror
将所有警告变为错误,但警告的主题广泛而复杂。
【参考方案1】:
您可以在Makefile
的第一个目标之前添加
.PHONY: all clean errors
你会在Makefile
的末尾添加
errors:
$(MAKE) -k all
您应该阅读documentation of GNU make
顺便说一句,您可能指的是规则:
binary: $(BIN)
并且您应该避免将可执行文件命名为 test
(这是许多 shell 中的内置命令,也是标准的 /usr/bin/test
)
【讨论】:
是的,听起来就像设置错误一样简单:二进制以上是关于如何编写带有目标“错误”的makefile?的主要内容,如果未能解决你的问题,请参考以下文章
如何影响目标的顺序,为 Makefile.am 添加额外的步骤等?