C++ 带有-std=c++;11

C++ 带有-std=c++;11,c++,c++11,makefile,C++,C++11,Makefile,我正在为我的程序编写一个makefile(已测试并运行)。我能告诉您的问题是,函数中没有运行my'-std=c++11'。代码弹出一个无法识别的错误,当我简单地运行'g++-oexe-std=c++11*.cpp'时,我没有得到这个错误。这是我的制作文件 HEADERS = card.h sortedLinkedList.h deck.h OBJECTS = card.o sortedLinkedList.o deck.o main.o exe: $(OBJECTS) g++ -std=c

我正在为我的程序编写一个makefile(已测试并运行)。我能告诉您的问题是,函数中没有运行my'-std=c++11'。代码弹出一个无法识别的错误,当我简单地运行'g++-oexe-std=c++11*.cpp'时,我没有得到这个错误。这是我的制作文件

HEADERS = card.h sortedLinkedList.h deck.h
OBJECTS = card.o sortedLinkedList.o deck.o main.o
exe: $(OBJECTS)
   g++ -std=c++11 $^ -o $@
%.o: %.cpp $(HEADERS)
   g++ -c -std=c++11 $< -o $@
clean:
   rm -i *.o exe
xxd生成文件的输出

00000000: 4845 4144 4552 5320 3d20 6361 7264 2e68  HEADERS = card.h
00000010: 2073 6f72 7465 644c 696e 6b65 644c 6973   sortedLinkedLis
00000020: 742e 6820 6465 636b 2e68 0a4f 424a 4543  t.h deck.h.OBJEC
00000030: 5453 203d 2063 6172 642e 6f20 536f 7274  TS = card.o Sort
00000040: 6564 4c69 6e6b 6564 4c69 7374 2e6f 2064  edLinkedList.o d
00000050: 6563 6b2e 6f20 6c61 6238 2e6f 0a4c 6162  eck.o lab8.o.Lab
00000060: 383a 2024 284f 424a 4543 5453 290a 0967  8: $(OBJECTS)..g
00000070: 2b2b 202d 7374 643d 632b 2b31 3120 245e  ++ -std=c++11 $^
00000080: 202d 6f20 2440 0a25 2e6f 3a20 252e 6370   -o $@.%.o: %.cp
00000090: 7020 2428 4845 4144 4552 5329 200a 0967  p $(HEADERS) ..g
000000a0: 2b2b 202d 6320 2d73 7464 3d63 2b2b 3131  ++ -c -std=c++11
000000b0: 2024 3c20 2d6f 2024 400a 636c 6561 6e3a   $< -o $@.clean:
000000c0: 0a09 726d 202d 6920 2a2e 6f20 4c61 6238  ..rm -i *.o Lab8
000000d0: 0a                            
00000000:4845 4144 4552 5320 3d20 6361 7264 2e68头=card.h
00000010:2073 6f72 7465 644c 696e 6b65 644c 6973分类链接列表
00000020:742e 6820 6465 636b 2e68 0a4f 424a 4543 t.h甲板h.OBJEC
00000030:5453 203d 2063 6172 642e 6f20 536f 7274 TS=card.o排序
00000040:6564 4c69 6e6b 6564 4c69 7374 2e6f 2064 edLinkedList.o d
00000050:6563 6b2e 6f20 6c61 6238 2e6f 0a4c 6162 eck.o lab8.o.Lab
00000060:383a 2024 284f 424a 4543 5453 290a 0967 8:$(对象)…g
00000070:2b2b 202d 7374 643d 632b 2b31 3120 245e++-std=c++11$^
00000080:202d 6f20 2440 0a25 2e6f 3a20 252e 6370-o$@.%.o:%.cp
000000 90:7020 2428 4845 4144 4552 5329 200a 0967 p$(页眉)…g
000000a0:2b2b 202d 6320 2d73 7464 3d63 2b2b 3131++-c-std=c++11
000000b0:2024 3c20 2d6f 2024 400a 636c 6561 6e3a$<-o$@。清洁:
000000c0:0a09 726d 202d 6920 2E 6f20 4c61 6238..rm-i*.o Lab8
000000d0:0a

通常,您希望使用
CXXFLAGS
隐式变量指定此开关。我不确定当前模式规则失败的原因,但使用CXXFLAGS将允许完全消除它。通常,您希望使用
CXXFLAGS
隐式变量来指定此开关。我不确定当前模式规则失败的原因,但使用CXXFLAGS将允许完全消除它

我相信问题出在这方面:

HEADERS = card.h sortedLinkedList.h deck.h
#----------------^
您已在
sortedLinkedList.h
上指定了依赖项,但该文件不存在。您只有带大写字母
S
SortedLinkedList.h

规则

%.o: %.cpp $(HEADERS)
    g++ -c -std=c++11 $< -o $@
您可以通过运行禁用所有内置规则的
make-r
来确认这一点。它现在应该找不到制作
卡.o
的规则


要解决这个问题,您应该修复
SortedLinkedList.h
的大小写。你也应该考虑使用内置的规则,只设置<代码> CXXFLAGIS= -STD= C++ 11 .< /P> < P>我相信问题在这一行:

HEADERS = card.h sortedLinkedList.h deck.h
#----------------^
您已在
sortedLinkedList.h
上指定了依赖项,但该文件不存在。您只有带大写字母
S
SortedLinkedList.h

规则

%.o: %.cpp $(HEADERS)
    g++ -c -std=c++11 $< -o $@
您可以通过运行禁用所有内置规则的
make-r
来确认这一点。它现在应该找不到制作
卡.o
的规则


要解决这个问题,您应该修复
SortedLinkedList.h
的大小写。你也应该考虑使用内置的规则,只设置<代码> CXXFLAGS=-STD= C++ 11 。< /P>我有我的输出,现在我在Linux机器上编码,如果这有什么区别,但我不知道它能如何。你确定你正在运行你所发的MaX文件而不是一些不同的Mag文件吗?<代码> L< <代码>输出?@克劳斯你的答案没有帮助,因为它是基于一个被证明是错误的猜测。这不是基于过时的信息,而是基于不完整的信息。在写答案之前考虑更多信息,或者接受猜测有时可能是错误的。我现在发布了我的输出。如果这有什么区别,我正在linux机器上编码,但我不知道这是怎么回事。你确定你正在运行你发布的生成文件而不是其他的生成文件吗?什么是
ls
输出?@Klaus你的答案没有帮助,因为它是基于我猜结果是不正确的。这不是基于过时的信息,而是基于不完整的信息。在写一个答案之前考虑更多的信息,或者接受猜测有时是错误的。你是正确的,不工作,感谢解释和提示,而不仅仅是答案。你是正确的,不工作,谢谢解释和提示,而不仅仅是答案。
g++    -c -o card.o card.cpp