当我运行“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 的部分
您覆盖了从
OBJS
到 NAME
的内置规则,但没有覆盖从 .cpp
到 .o
的编译规则。
正确的修复似乎是不覆盖任何内置规则,而是将
-Wall
添加到内置规则的正确标志变量中(我猜在这种情况下是 CXXFLAGS
)。另请参阅 GNU Make 中 CPPFLAGS 和 CXXFLAGS 之间的区别
该变量名为
CFLAGS
,而不是 CLAGS
。