【问题标题】:Makefile to support c++11支持 c++11 的 Makefile
【发布时间】:2017-09-11 10:19:36
【问题描述】:

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

output: main.o google_api.o
    g++ main.o google_api.o -o output
    rm *.o
    clear
    ./output

main.o: main.cpp
    g++ -c main.cpp

test.o: google_api.cpp google_api.h
    g++ -c google_api.cpp

当我编译我的代码时,我得到下一个错误 -

非聚合类型“向量”无法初始化 带有初始化列表

我正在检查这个问题,发现我需要在我的 makefile 中添加 -std=c++11 支持来解决这个问题。我将此命令添加到代码中:

g++ -std=c++11 main.o google_api.o -o 输出

但这不是做任何改变。如果有人可以帮助我解决这个问题,我会很高兴。谢谢

【问题讨论】:

  • 您更改的行是用于链接的行,而不是用于编译的行。您需要将标志添加到两者。
  • 我还建议您了解有关make 和makefile 的更多信息。尤其是关于变量

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


【解决方案1】:

改变这个:

main.o: main.cpp
    g++ -c main.cpp

到:

main.o: main.cpp
    g++ -std=c++11 -c main.cpp

你也可以使用这样的东西作为Makefile的基础:

CXX=g++
CXXFLAGS=-g -Wall -MMD -std=c++11
LDLIBS=-lm # list libs here
output: main.o google_api.o
clean:
    $(RM) *.o *.d output
-include $(wildcard *.d)

stackoverflow上也有类似问题:Makefile c++11 support

【讨论】:

  • 应该是CXX而不是CC?
猜你喜欢
  • 2012-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 2017-02-24
  • 2012-11-01
相关资源
最近更新 更多