【问题标题】:Error when build Ogre on Linux: narrowing conversion在 Linux 上构建 Ogre 时出错:缩小转换
【发布时间】:2017-01-27 09:24:47
【问题描述】:

我正在尝试在 Linux 上获取 Ogre。我下载了源文件并解压缩它们。然后我创建了构建文件夹,然后我运行了“cmake ..”。完成后,我运行“make -j4”(我确实有 4 个内核,我也尝试过 make)。我达到 49% 并且每次都停止。我已经下载了 cmake gui 并运行了 configure 并选中了所有框。我再次点击配置然后生成。我尝试再次运行“make”。

Downloads/ogre_src_v1-8-1/RenderSystems/GL/src/atifs/src/ps_‌​1_4.cpp:689:1: error: narrowing conversion of ‘-35051’ from ‘int’ to ‘uint {aka unsigned int}’ inside { } [-Wnarrowing] }; 

这是多次弹出的错误,只是它们引用了 ps_1_4.cpp 中不同的代码行并且数字“-35051”不同。

此外,在整个构建过程中,将 const GLboolean* 转换为 GLboolean* 有几个警告,但这是我最后得到的消息:

RenderSystems/GL/CMakeFiles/RenderSystem_GL.dir/build.make:542: recipe for target 'RenderSystems/GL/CMakeFiles/RenderSystem_GL.dir/__/__/RenderSystem_GL/compile_RenderSystem_GL_0.cpp.o' failed
make[2]: *** [RenderSystems/GL/CMakeFiles/RenderSystem_GL.dir/__/__/RenderSystem_GL/compile_RenderSystem_GL_0.cpp.o] Error 1
CMakeFiles/Makefile2:1057: recipe for target 'RenderSystems/GL/CMakeFiles/RenderSystem_GL.dir/all' failed
make[1]: *** [RenderSystems/GL/CMakeFiles/RenderSystem_GL.dir/all] Error 2
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2

每次我尝试一种新方法时,我都会删除构建文件夹并重新开始。每次它似乎都以这条消息结束。我对 Linux 和 CMake 还是比较陌生,所以你能解释一下发生了什么以及你是如何得出这个结论的吗?

注意:我找到了one forum that talks about this,但我不知道构建函数在哪里,也不知道如何更改CXX_FLAG。

【问题讨论】:

  • recipe for target * failed just 表示目标构建失败,没有任何信息描述失败的原因。这个信息在调试问题的时候有点意思。至于标题中的错误消息Recipe for target 'all' failed,此消息针对any make build 中的any error 出现。如果您想获得更多有价值的信息,请使用单线程make -j1 并查找包含Error 或类似内容的行。
  • 我这样做了,我看到的唯一错误是这样的几个错误:Downloads/ogre_src_v1-8-1/RenderSystems/GL/src/atifs/src/ps_1_4.cpp:689:1: error: narrowing conversion of ‘-35051’ from ‘int’ to ‘uint {aka unsigned int}’ inside { } [-Wnarrowing] }; ^
  • 因此,这些错误是实际对您遇到的失败的描述。将它们添加到您的问题中,因为所有有价值的信息都应该在问题帖子中,而不是在 cmets 中。
  • 我还补充说,我找到了一个有解决方案的论坛,但它不像我需要的那样具有描述性。我不知道构建功能在哪里/去哪里。
  • I don't know where the build function is/goes. - 在提到的帖子中,“构建函数”是调用cmake 的那个。它建议在此调用之前设置(修改)CXXFLAGS 变量。当您手动调用cmake 时,您需要在调用前在同一终端中设置变量:export CXXFLAGS+=' -std=gnu++98'。或者,您可以在 cmake 调用中修改编译器标志:cmake -DCMAKE_CXX_FLAGS="--std=gnu++98" ..

标签: c++ linux cmake ogre


【解决方案1】:

Referenced post 建议使用gnu++98 标准(实际上是c++98 加上GNU 扩展)可以成功构建Ogre。

标准是通过编译器标志设置的,如果cmake 标志可以传递为:

cmake -DCMAKE_CXX_FLAGS="--std=gnu++98" ..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    • 2011-06-17
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多