【发布时间】:2016-01-24 20:55:40
【问题描述】:
我目前的 C++ 项目有问题。我需要一些 C++11 提供的工具,但是当我想使用 Makefile 进行编译时,出现错误:
错误此文件需要 ISO C++ 2011 标准的编译器和库支持。此支持目前处于试验阶段,必须使用 -std=c++11 或 -std=gnu++11 编译器选项启用。
这是我的 Makefile :
.PHONY: clean, mrproper
# var
CXX = g++
EXEC = tablut
LDFLAGS =
CXXFLAGS = -std=c++11 -Wall -Wextra
SRC= partie.cpp pawn.cpp playground.cpp
OBJ= $(SRC:.c=.o)
# commands
all: $(EXEC)
tablut: $(OBJ)
$(CXX) -o tablut $(OBJ) $(LDFLAGS)
%.o: %.cpp
$(CXX) -o $@ -c $< $(CXXFLAGS)
clean:
rm -rf *.o
mrproper: clean
rm -rf tablut
有趣的是,如果我输入命令 g++ -c std=c++11 ... ,我的代码就会编译。
我做错了什么?
注意:我尝试使用标志 -std=c++11、-std=c++0x 和 -std=gnu++11
【问题讨论】:
-
能否包含运行
make的输出? -
它怎么能和这个
OBJ= $(SRC:.c=.o)一起工作???应该是OBJ= $(SRC:.cpp=.o) -
@AlexLop.:因为触发的唯一规则是
tablut,因为$(OBJ) == $(SRC)。 -
@BillLynch 对!接得好。请在您的答案中添加此解释并显示正在执行的实际编译行(并且它不包含
-std=c++11)