【发布时间】:2016-11-23 20:46:25
【问题描述】:
我正在尝试制作一个从 github 下载的项目。
设置所有依赖项后,它要求我运行“make”。但是,'make' 失败并抱怨找不到 chrono 文件。
我知道这是与编译器相关的问题,我必须启用 c++11 支持。更具体地说,传递编译器标志-stdlib=libc++。
但是,将此标志添加到我的 Makefile 仍然会产生相同的错误。谁能解释这个标志需要在哪里/如何设置?
这是 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。但是,我仍然看到同样的错误。
我在 Makefile 中添加了CXXFLAGS += -stdlib=libc++ -std=gnu++11,但仍然看到相同的结果。
【问题讨论】:
-
您在开发环境中使用的是什么编译器(和版本)?
-
你在传递
-std=c++11吗?当我上次使用 C++11 时,你必须在 GCC 和 Clang 中执行此操作。 -
github 项目的链接可能会有所帮助。
-
@SR_ 一些 makefile 细节就足够了。
-
我必须下载xCode,所以我相信它使用的是gcc。版本是4.2.1。