-Wall 标志在 Makefile 中不起作用

问题描述 投票:0回答:2

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

makefile
2个回答
1
投票

您覆盖了从

OBJS
NAME
的内置规则,但没有覆盖从
.cpp
.o
的编译规则。

正确的修复似乎是不覆盖任何内置规则,而是将

-Wall
添加到内置规则的正确标志变量中(我猜在这种情况下是
CXXFLAGS
)。另请参阅 GNU Make 中 CPPFLAGS 和 CXXFLAGS 之间的区别


1
投票

该变量名为

CFLAGS
,而不是
CLAGS

© www.soinside.com 2019 - 2024. All rights reserved.