我正在使一个使用lambda函数的小型学校作业复杂化,因此它需要在gcc调用中使用'-std=c++11‘。但是,make文件的输出似乎显示未添加该文件。我没有链接问题,所以没有必要在这里复制所有的源代码。
这是我的makefile:
CC=g++
CFLAGS= -std=c++11 -I. -Wall
DEPS = wordarray.h
OBJ = ayalajL03b.o wordarray.o
%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
L03b.out: $(OBJ)
$(CC) -o $@ $^ $(CFLAGS)
.PHONY: clean
clean:
rm -f -v *.o
rm -f -v *.out下面是输出:
[user@server 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);请帮我弄明白我做错了什么。
发布于 2016-09-07 23:45:53
你的规则是
%.o: %.c $(DEPS)但是您正在编译一个.cpp文件。
将使用.cpp源文件的隐式make规则。
将您的规则更改为
%.o: %.cpp $(DEPS)或者设置隐式规则中使用的CXXFLAGS变量。
https://stackoverflow.com/questions/39373916
复制相似问题