【发布时间】: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 * failedjust 表示目标构建失败,没有任何信息描述失败的原因。这个信息在调试问题的时候有点意思。至于标题中的错误消息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" ..。