【问题标题】:CMakeLists for C++ library to use in source code [duplicate]在源代码中使用的 C++ 库的 CMakeLists [重复]
【发布时间】:2017-10-30 23:41:26
【问题描述】:

我在我的源文件中包含一个库中的头文件并得到以下错误我最初的猜测是 CMakeLists 有问题请任何建议

/usr/include/c++/4.8/bits/c++0_warning.h:32:2: error: #error 此文件需要编译器和库支持 ISO C++ 2011 标准。

此支持目前处于试验阶段,必须使用 -std=c++11 或 -std=gnu++11 编译器选项启用。

#error 这个文件需要编译器和库支持

make[2]: *** [CMakeFiles..] 错误 1

make[1]: *** [CMakeFiles..] 错误 2

make: *** [all] 错误 2

【问题讨论】:

  • 您是否尝试过按照编译器的建议进行操作?另请注意,GCC 4.8 版现在已经过时了,不支持所有 C++11,而且几乎不支持更高版本的标准。
  • 有没有直接的方法将GCC 4.8版更新到C++11
  • 再次阅读消息,尤其是这部分:“此支持目前是实验性的,必须使用 -std=c++11 或 -std=gnu++11 编译器选项启用。”您是否尝试在构建时添加选项-std=c++11
  • 这意味着我想编译它如下 make -std=c++11 或 make -std=gnu++11 ?它也没有工作

标签: c++ c++11 makefile cmake


【解决方案1】:

如错误所述:

/usr/include/c++/4.8/bits/c++0_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard.

您需要启用 C++11 支持。您可以通过编写以下行在 CMakeLists.txt 中执行此操作

add_definitions(-std=c++11)

然后重新编译。

还要注意 GCC 4.8 对 C++11 的支持有限,可以查看支持here

【讨论】:

  • 非常感谢。它帮助很大。这里还有另一个障碍,即包含一个扩展名为 .a 的静态库 知道在 CMakeLists.txt 中写什么以包含以下 Makefile 命令 LIB_NAME = AdsLib-$(OS_NAME).a
  • uff,这需要很长的答案,但您可以在这里查看示例 docs.ros.org/jade/api/catkin/html/howto/format2/… 以获得一些提示。
猜你喜欢
  • 2015-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 2016-09-18
相关资源
最近更新 更多