0

当我运行“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 的一部分

4

2 回答 2

1

变量名为CFLAGS,而不是CLAGS

于 2013-09-19T15:25:19.517 回答
1

OBJS您正在覆盖 from to的内置规则NAME,但不是 compling .cppto的规则.o

正确的修复似乎是不覆盖任何内置规则,而是-Wall为内置规则添加正确的标志变量(我猜在这种情况下CXXFLAGS)。另请参阅GNU Make 中 CPPFLAGS 和 CXXFLAGS 之间的区别

于 2013-09-19T16:06:17.030 回答