当我运行“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
答案 0 :(得分:1)
变量名为CFLAGS
,而不是CLAGS
。
答案 1 :(得分:1)
您要覆盖从OBJS
到NAME
的内置规则,而不是将.cpp
编译为.o
的规则。
正确的修复似乎是不覆盖任何内置规则,而是将-Wall
添加到内置规则的正确flags变量中(我想在这种情况下CXXFLAGS
) 。另请参阅Difference between CPPFLAGS and CXXFLAGS in GNU Make