【问题标题】:Compiler Flags For C++11 - chrono file not found [closed]C ++ 11的编译器标志-找不到计时文件[关闭]
【发布时间】: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。

标签: c++ c++11 makefile flags


【解决方案1】:

你应该添加

CXXFLAGS += -std=c++11

到你的makefile(在规则之前的某个地方)。


假设您有足够最新的工具链。

旧的编译器支持标志

-std=c++0x

可能会。


如何更新您的工具链(正如您在 your comment 中要求的那样),取决于您的操作系统环境和软件管理系统。

至少可以选择自己编译最新(稳定)版本的工具链。

【讨论】:

    猜你喜欢
    • 2013-12-08
    • 2020-06-01
    • 2022-12-01
    • 2022-01-27
    • 2016-11-18
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多