1
我在使用lambda函數的小型學校任務複雜化,所以它需要gcc調用中的'-std = C++ 11'。然而,make文件的輸出似乎表明它沒有被添加。我沒有鏈接問題,所以沒有必要在這裏複製所有的源代碼。在生成文件中無法識別CFLAGS
這裏是我的makefile:
CC=g++
CFLAGS= -std=c++11 -I. -Wall
DEPS = wordarray.h
OBJ = ayalajL03b.o wordarray.o
%.o: %.c $(DEPS)
$(CC) -c -o [email protected] $< $(CFLAGS)
L03b.out: $(OBJ)
$(CC) -o [email protected] $^ $(CFLAGS)
.PHONY: clean
clean:
rm -f -v *.o
rm -f -v *.out
這裏是輸出:
[[email protected] Lab03]$ make
g++ -c -o wordarray.o wordarray.cpp
wordarray.cpp:28:77: warning: lambda expressions only available with -std=c++11 or =gnu++11
counter([](char a)->bool{return !isvowel(a) && !isdigit(a) && isalpha(a);}, Worount].word);
請幫助我瞭解我在做什麼錯。
可能的重複[如何在gcc中啓用C++ 11](http://stackoverflow.com/questions/16886591/how-do-i-enable-c11-in-gcc) –
使用'CXX '和'CXXFLAGS'。刪除你的'%.o:%.c'的規則,它不適用於'.cpp'文件,然後重試。 Make使用'CXX'和'CXXFLAGS'變量''.cpp'文件來建立'.o'目標的預定義(在製作術語中是「隱含的」)規則。 – Andrew