C++ C++;文件需要库支持
我正试图从终端编译一个简单的程序,该程序使用condition_变量类。在构建时,我得到以下错误: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
此文件需要编译器和库支持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: