2012-12-11 304 views
2

最近,我开始在C小项目++。我创建了一个简单的Makefile:Makefile的C++ 11的支持

CC=g++ 
    CFLAGS =-std=c++0x -I. -c 
    VPATH = src include 



    vpath %.c src 

    vpath %.h include 

    TabooSearch : main.o Task.o TabooList.o 
        $(CC) $(CFLAGS) -o TabooSearch main.o Task.o TabooList.o 

的问题是,当我运行make我得到这个样的错误形成的gcc:
error: ‘nullptr’ was not declared in this scope
我没有任何的IDE有什么不对我的Makefile,可以有人帮我解决这个问题。我的gcc版本是4.7.2在Debian提前
感谢

+0

为什么你认为在Makefile负责C++错误? – 2012-12-11 20:45:39

+0

使用namespace std?或std :: nullptr?在源文件中... – neagoegab

+1

“的Makefile C++ 11的支持” ... “-std = C++ 0x中” ... –

回答

5

由于您使用的隐含规则为建设.o文件,你应该使用CXXFLAGS设置C++的标志:

CXXFLAGS = -std =的C++ 0x

无需-I.-c

我想补充一些更多的标志,以获得体面的错误和警告:

CXXFLAGS:= -Wall -pedantic -Wextra,错误-std +的C++ 0x

同样,对于g++。如果您的默认设置不执行g ++,那么你需要添加

CXX = G ++

+0

也应该使用,而不是CC CXX – goji

+0

坦克,帮助(你只是一个小错误疗法您problably的意思写'CXXFLAGS:= -Wall -pedantic -Wextra-错误-std = C++ 0x')!我不明白为什么我但我会阅读文档。非常感谢。 – Ufo

+0

@Troy好点,我加了一些事。 – juanchopanza