Compiler construction -墙标志无法从Makefile工作

Compiler construction -墙标志无法从Makefile工作,compiler-construction,makefile,Compiler Construction,Makefile,当我运行“g++-Wall programName.cpp”时,编译器会输出有关未使用变量的警告,但当我使用Makefile进行编译时,这些警告不会出现。我有 OBJS = test.o # Name of executable NAME = ../test # Flags to pass to the compiler. CFLAGS = -Wall all: $(NAME) $(NAME): $(OBJS) g++ $(CFLAGS) -o $(NAME) $(OBJS)

当我运行“g++-Wall programName.cpp”时,编译器会输出有关未使用变量的警告,但当我使用Makefile进行编译时,这些警告不会出现。我有

OBJS = test.o

# Name of executable
NAME = ../test

# Flags to pass to the compiler. 
CFLAGS = -Wall

all: $(NAME)

$(NAME): $(OBJS)
   g++ $(CFLAGS) -o $(NAME) $(OBJS)
在我的Makefile中,但似乎不起作用。有人知道这是什么原因吗

当我运行make时,我得到了输出:

 g++    -c -o test.o test.cpp
 g++ -Wall -o test test.o

似乎-Wall只应用于将.o文件转换为可执行文件的过程,而不是.cpp->.o的部分。该变量名为
CFLAGS
,而不是
CLAGS

您正在覆盖从
OBJS
转换为
NAME
的内置规则,但不是将
.cpp
编译为
.o
的规则


正确的修复方法似乎是不重写任何内置规则,而是将
-Wall
添加到内置规则的正确flags变量中(我猜在本例中是
cxflags
)。另请参见

输入问题时有误……对不起。我有CFLAGSThen,我们绝对无法帮助您提供信息。该语句将CFLAGS设置为该值。伟大的所以很明显,如果您在编译行中没有看到该标志,那么问题就出在makefile的其他地方。是的,这就是问题所在。谢谢你的帮助!