-Wall标志无法从Makefile运行

时间:2013-09-19 15:23:10

标签: 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)

在我的Makefile中,但似乎不起作用。有谁知道是什么原因造成的?

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

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

似乎-Wall仅适用于将.o文件转换为可执行文件的过程,而不是.cpp - >的部分。的.o

2 个答案:

答案 0 :(得分:1)

变量名为CFLAGS,而不是CLAGS

答案 1 :(得分:1)

您要覆盖从OBJSNAME的内置规则,而不是将.cpp编译为.o的规则。

正确的修复似乎是不覆盖任何内置规则,而是将-Wall添加到内置规则的正确flags变量中(我想在这种情况下CXXFLAGS) 。另请参阅Difference between CPPFLAGS and CXXFLAGS in GNU Make