C++ C++;文件需要库支持

C++ C++;文件需要库支持,c++,makefile,C++,Makefile,我正试图从终端编译一个简单的程序,该程序使用condition_变量类。在构建时,我得到以下错误: 此文件需要编译器和库支持ISO C++ 2011标准。此支持目前处于试验阶段,必须使用-std=c++11或-std=gnu++11编译器选项启用 在研究这个错误时,我在make文件中添加了必要的标志,但是我仍然得到了相同的错误 这是我的makefile: CXX=g++$(CCFLAGS) MAIN=MAIN.o DATACLASS=DATACLASS.o OBJS=$(主)$(数据类) LIB

我正试图从终端编译一个简单的程序,该程序使用condition_变量类。在构建时,我得到以下错误:

此文件需要编译器和库支持ISO C++ 2011标准。此支持目前处于试验阶段,必须使用

-std=c++11
-std=gnu++11
编译器选项启用

在研究这个错误时,我在make文件中添加了必要的标志,但是我仍然得到了相同的错误

这是我的makefile:

CXX=g++$(CCFLAGS)
MAIN=MAIN.o
DATACLASS=DATACLASS.o
OBJS=$(主)$(数据类)
LIBS=-pthread
CCFLAGS=-g-std=c++11
全部:主要
主要:$(主要)$(数据类)
$(CXX)-o主$(主)$(数据类)$(LIBS)
数据类:$(数据类)
$(CXX)-o数据类$(数据类)$(LIBS)
清洁:
rm-f$(OBJS)$(OBJS:.o=.d)
realclean:
rm-f$(OBJS)$(OBJS:.o=.d)main
%.d:%.cc
$(SHELL)-ec'$(CC)-M$(CPPFLAGS)$<\
|sed'\''s/\($*\)\.o[:]*/\1.o$@:/g'\''>$@\
[-s$@]| rm-f$@'
包括$(OBJS:.o=.d)
我确信我遗漏了一些小而愚蠢的东西,因为我是makefiles新手,但任何帮助都将不胜感激

  • CXX
    重写为
    CXX=g++
  • CCFLAGS
    更改为
    cxflags=-g-std=c++11
    ,以及
  • 将规则重写为
    $(CXX)$(CXXFLAGS).
  • $(CXX)$(cxflags)
    随后将替换为
    g++-g-std=c++11
    。这更像是定义
    makefile
    的标准方法。下面是生成的
    makefile
    的一个片段

    CXX=g++
    MAIN=MAIN.o
    DATACLASS=DATACLASS.o
    OBJS=$(主)$(数据类)
    LIBS=-pthread
    CXXFLAGS=-g-std=c++11
    全部:主要
    main:$(OBJS)
    $(CXX)$(CXXFLAGS)$-o$@$(LIBS)
    

    作为旁注,您确定应该这样定义此规则吗

    dataclass:$(dataclass)
    $(CXX)$(CXXFLAGS)$-o$@$(LIBS)
    
    目标是否应该不是
    dataclass.o
    $(dataclass)
    和其他文件


    注意:我还加入了一些
    make
    来整理
    makefile
    规则

    • $?
      -由所有先决条件替换
    • $@
      -被目标名称替换

    • CCFLAGS=-g-std=c++11
      CXX=g++$(CCFLAGS)
      之前尝试将
      CCFLAGS=-g-std=c++11
      设置在
      CXX
      变量之后。为什么使用
      CCFLAGS
      而不是
      cxflags
      ?我认为使用
      cxflags
      而不将
      $(CCFLAGS)
      添加到
      CXX
      更好。我不认为有什么叫做“条件变量”。@barrt051您的目标定义也是错误的:
      数据类:
      =>
      数据类。o: