gpt4 book ai didi

C++ 文件需要库支持

转载 作者:行者123 更新时间:2023-11-28 02:20:30 24 4
gpt4 key购买 nike

我正在尝试从使用 condition_variable 类的终端编译一个简单的程序。构建后,出现以下错误:

This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

在研究这个错误here ,我在我的 make 文件中添加了必要的标志,但我仍然遇到同样的错误。

这是我的生成文件:

CXX=        g++ $(CCFLAGS)
MAIN= main.o
DATACLASS= dataclass.o
OBJS = $(MAIN) $(DATACLASS)

LIBS= -pthread

CCFLAGS= -g -std=c++11

all: main

main: $(MAIN) $(DATACLASS)
$(CXX) -o main $(MAIN) $(DATACLASS) $(LIBS)

dataclass: $(DATACLASS)
$(CXX) -o dataclass $(DATACLASS) $(LIBS)

clean:
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 $@'

include $(OBJS:.o=.d)

我确信我遗漏了一些小而愚蠢的东西,因为我是 makefile 的新手,但我们将不胜感激任何帮助。

最佳答案

  1. CXX重写为CXX = g++
  2. CCFLAGS 更改为 CXXFLAGS = -g -std=c++11,并且
  3. 将您的规则重写为 $(CXX) $(CXXFLAGS) ...

$(CXX) $(CXXFLAGS) 将被替换为 g++ -g -std=c++11。这更像是定义 makefile 的标准方法。这是生成的 makefile 的片段。

CXX = g++
MAIN = main.o
DATACLASS = dataclass.o
OBJS = $(MAIN) $(DATACLASS)

LIBS = -pthread

CXXFLAGS = -g -std=c++11

all: main

main: $(OBJS)
$(CXX) $(CXXFLAGS) $? -o $@ $(LIBS)

附带说明一下,您确定应该这样定义此规则吗?

dataclass: $(DATACLASS)
$(CXX) $(CXXFLAGS) $? -o $@ $(LIBS)

目标不应该是 dataclass.o$(DATACLASS) 而先决条件是其他文件吗?


注意:我还包含了一些make automatic variables整理 makefile 规则。

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

关于C++ 文件需要库支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32693806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com