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 は、.cpp の一部ではなく、.o ファイルを実行可能ファイルに変換するプロセスにのみ適用されているようです -> .o

4

2 に答える 2

1

変数の名前CFLAGSは ではなくCLAGSです。

于 2013-09-19T15:25:19.517 に答える
1

OBJSからへ行くための組み込み規則をオーバーライドしていますが、への準拠のための規則はオーバーライドしNAMEていません。.cpp.o

適切な修正は、組み込みルールをオーバーライドせず、代わりに組み込みルール-Wallの正しい flags 変数に追加することです (この場合だと思いますCXXFLAGS)。GNU Make における CPPFLAGS と CXXFLAGS の違いも参照してください。

于 2013-09-19T16:06:17.030 に答える