在makefile中无法识别CFLAGS

1 c++ makefile c++11

我使用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
Run Code Online (Sandbox Code Playgroud)

这是输出:

[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);
Run Code Online (Sandbox Code Playgroud)

请帮我理解我做错了什么.

πάν*_*ῥεῖ 5

你的规则是

%.o: %.c $(DEPS)
Run Code Online (Sandbox Code Playgroud)

但是你正在编译一个.cpp文件.

将使用源文件的隐式make规则.cpp.

要么将规则更改为

%.o: %.cpp $(DEPS)
Run Code Online (Sandbox Code Playgroud)

或者设置CXXFLAGS隐式规则中使用的变量.