2016-11-23 45 views
0

我正在嘗試做一個我從github下載的項目。 設置所有依賴關係後,它會要求我運行「make」。但是,'make'失敗並且抱怨chrono文件未找到。
我知道這是一個編譯器相關的問題,我必須啓用C++ 11支持。更具體地說,傳遞編譯器標誌-stdlib=libc++
但是,將此標誌添加到我的Makefile仍然會產生相同的錯誤。任何人都可以解釋哪裏/如何設置這個標誌?C++編譯器標誌11 - 沒有找到計時文件

這是Makefile文件的內容:

TARGETS = \ 
    ptools \ 
    feature \ 
    libsvm \ 
    wrapper 

all: 
    -for dir in $(TARGETS); do \ 
    cd $${dir}; $(MAKE); cd ..; \ 
    done cd libsvm; $(MAKE) lib; cd ..; 

clean: 
    -for dir in $(TARGETS); do \ 
    cd $${dir}; $(MAKE) clean; cd ..; \ 
    done 

test: 
    @echo hello; 

.PHONY: clean $(TARGETS) 

UPDATE1:運行brew install gcc後,將開始下載的依賴關係。但是,它在下載其中一個依賴關係mpfr時會出現以下錯誤:錯誤:無法使用任何可用的編譯器構建mpfr。安裝GNU的GCC。

Update2:我設法更新gcc,它返回的版本是6.2.0。不過,我仍然看到同樣的錯誤。 我將CXXFLAGS += -stdlib=libc++ -std=gnu++11添加到我的Makefile中,但仍然看到相同的結果。

+1

你在開發環境中使用什麼編譯器(和版本)? –

+3

你正在傳遞'-std = C++ 11'嗎?你必須在GCC和Clang中這樣做,以便在上次使用C++ 11時使用它們。 – cHao

+0

github項目的鏈接可能有所幫助。 –

回答

1

您應該添加

CXXFLAGS += -std=c++11 

到你的makefile(前規則的地方)。


假設你有最新的工具鏈。

舊的編譯器支持的標誌

-std=c++0x 

可能。


如何更新您的工具鏈(如你在your comment要求),取決於您的操作系統環境和軟件管理系統。

至少一個選項是自己編譯最新(穩定)版本的工具鏈。