在 Linux 上构建 Ogre 时出错:缩小转换

Error when build Ogre on Linux: narrowing conversion

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

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

标准是通过编译器标志设置的,在 cmake 的情况下,标志可以传递为:

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