2016-11-23 80 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要求),取决于您的操作系统环境和软件管理系统。

至少一个选项是自己编译最新(稳定)版本的工具链。