2012-12-11 247 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