【问题标题】:Makefile c++11 supportMakefile C ++ 11支持
【发布时间】:2012-11-29 11:23:22
【问题描述】:

我最近开始了一个 C++ 小项目。我创建了一个简单的 Makefile:

    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
我不知道我的 Makefile 有什么问题,有人可以帮我解决这个问题。我在 Debian 上的 gcc 版本是 4.7.2
提前致谢

【问题讨论】:

  • 为什么你认为 Makefile 会导致 C++ 错误?
  • 使用命名空间标准?还是 std::nullptr?在您的源文件中...
  • "Makefile c++11 支持" ... "-std=c++0x" ...
  • 如果你运行g++ -std=c++0x -I. -c -o TabooSearch src/main.c src/Task.c src/TabooList.c会发生什么?
  • Grmpf.该问题需要您公开创建该错误消息的 (c++) 文件

标签: c++ linux gcc c++11 makefile


【解决方案1】:

由于您使用隐式规则来构建 .o 文件,因此您应该使用 CXXFLAGS 来设置 C++ 标志:

CXXFLAGS =-std=c++0x

不需要-I.-c

我会添加更多标志来获得正确的错误和警告:

CXXFLAGS := -Wall -Wextra -pedantic-errors -std+c++0x

g++ 也是如此。如果你的默认设置没有调用 g++,那么你需要添加

CXX = g++

【讨论】:

  • 也应该使用 CXX 而不是 CC
  • 有帮助的坦克(你只是有一个小错误,你可能是想写CXXFLAGS := -Wall -Wextra -pedantic-errors -std=c++0x)!我不明白为什么,但我会阅读 make 文档。非常感谢。
猜你喜欢
  • 2017-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-13
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多