【问题标题】:c++11 Makefile won't compilec++11 Makefile 不会编译
【发布时间】:2014-02-16 02:51:59
【问题描述】:

我有一个用于上一个程序的简单 Makefile。然而,在这个当前程序中,我使用的是 C++11 功能,并且可以使用 g++47 -std=c++0x test_list.cpp 编译我的程序,但是当我在 Makefile 中使用它时,会带来大量错误。

文件:test_list.cppList.cppList.h

生成文件:

proj2: test_list.o test_list.cpp List.h List.cpp
        g++47 -std=c++0x test_list.cpp -g -Wall -o proj2.x

clean:   
        rm -rf *o proj2

然后我这样做:make,它会编译成大量错误。

【问题讨论】:

  • 由于您没有显示“大量错误”,因此很难知道发生了什么。令人惊讶的是,您没有编译 List.cpp,因为您提到它存在。

标签: c++11 makefile g++-4.7


【解决方案1】:

鉴于您提供的信息量,我只能猜测。

proj2: test_list.o test_list.cpp List.h List.cpp 
    g++47 -std=c++0x test_list.cpp -g -Wall -o proj2.x

您是否缺少第二行开头的换行符和制表符? (makefile 对空格敏感)。

为什么不粘贴您看到的错误列表。这样会更容易提供帮助。

你也没有构建目标文件 test_list.o 的行吗? (即 proj2 目标依赖于 test_list.o 并构建它)。

【讨论】:

  • 是的,我有换行符,出于某种原因,在这个编辑器中不会这样做。它给了我很多错误,但这是主要错误:List.cpp:477: 警告:扩展初始化列表仅适用于 -std=c++0x 或 -std=gnu++0x。抱歉编辑不好,第一次发帖...
  • 我将如何制作一个 test_list.o...我的程序将在午夜到期,帮助!!!!
  • 首先.. test_list.o 应该由 make 自动构建以获取 proj2,因此我认为您可以将其从依赖项列表中删除。其次,您要告诉 make 为了构建 proj2,您需要构建 proj2.x 所以更改 -o proj2(没有 .x)。我怀疑这会有所帮助.. 但你似乎看到了奇怪的东西,所以它不应该受到伤害。
  • 那么我认为您将不得不发布更多信息。尝试发布前十几行 make 错误。从上到下修复它们。
猜你喜欢
  • 1970-01-01
  • 2016-01-24
  • 1970-01-01
  • 1970-01-01
  • 2019-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多