Ogre3D : 构建示例程序 (Samples/Tutorial/Bootstrap.cpp)

Posted

技术标签:

【中文标题】Ogre3D : 构建示例程序 (Samples/Tutorial/Bootstrap.cpp)【英文标题】:Ogre3D : Building sample program (Samples/Tutorial/Bootstrap.cpp) 【发布时间】:2018-02-19 19:48:04 【问题描述】:

这就是我想要实现的目标:

首先,我使用的是 Ubuntu 17.10。我的目标是编译 Ogre3D,然后按照基本 cmake 项目设置页面中的说明构建示例程序:Ogre3D 1.10 cmake setup

我已经成功编译 Ogre 并像往常一样安装它(在 /usr/local 中),以便在编译我自己的项目时更加轻松。所以基本上,我最终得到:

当前的 Ogre3D 源代码(从 gi​​thub 克隆) 从此源代码构建结果(如源代码中的相关帮助文件中所述)。请记住,此时,所有基本依赖项都已得到满足,并且构建完成时没有任何问题。

我的项目文件,使用此CMakeLists.txt 设置和生成:

cmake_minimum_required(VERSION 3.9)

find_package(OGRE 1.10 REQUIRED)
include_directories($OGRE_INCLUDE_DIRS)
link_directories($OGRE_LIBRARY_DIRS)


file(COPY $OGRE_CONFIG_DIR/plugins.cfg $OGRE_CONFIG_DIR/resources.cfg DESTINATION $CMAKE_BINARY_DIR)

project(Ogretest)
add_executable(Ogretest main.cpp)

显然,在 /usr/local 中安装了 Ogre 后,它可以按原样工作,但否则我必须指定正确的路径。这些都不是问题。

一个 main.cpp 文件,它只是教程中提到的 Bootstrap.cpp 文件的副本。我将它添加到项目中,然后尝试构建。

此时,有些事情引起了我的注意。

示例浏览器与 Ogre 的其余部分同时构建,它依赖于教程中使用的相同 OgreBites 组件,由于 libfreetype.so.2.6没有找到。果然,freetype实际上是在配置cmake的时候为Ogre的构建构建的,我真的不明白为什么它会有任何问题。

由于 SDLK_ESCAPE 未声明,或者不在正确的范围内,示例程序无法编译。这很烦人,因为我几乎不知道这是否是由于 Ogre、SDL 或其他任何问题造成的。我的预感是我的系统上的 OgreBites 存在严重问题。

所以。

看到这个用于构建和使用最新版本的 Ogre 和 cmake 的“教程”是......充其量是模糊的,似乎真的总结为“复制示例文件并以某种方式构建你的东西​​”,我真的只有两个选择在这里。

要么有人试图指导我找出困扰我的疯狂问题,要么,我认为这会更有趣,有人构建了 Ogre,这个示例程序自己然后展示了他们的确切做法(即使我已经准备好了打赌没有人会遇到问题,但是嘿)

(此外,为了最终保持最佳状态,我认为使用 sudo make install 安装构建结果是个好主意,但是 makefile 没有卸载选项,而且在清理安装时我很无聊。除非有人有想法吗?)

【问题讨论】:

没有 ubuntu 安装的 Ogre 包吗?整个依赖项和卸载将由包系统处理。 【参考方案1】:
    libfreetype.so.2.6 是由 Ogre 构建的,但不是由 make install 安装的。我不知道为什么。把它放在编译器可以找到的地方(sudo cp Dependencies/lib/libfreetype.so* /usr/local/lib/)对我有用。不过我不喜欢这样做。 将其更改为OgreBites::SDLK_ESCAPE 即可编译。

【讨论】:

以上是关于Ogre3D : 构建示例程序 (Samples/Tutorial/Bootstrap.cpp)的主要内容,如果未能解决你的问题,请参考以下文章

Ogre3d restoreConfig 导致应用程序在 Ubuntu 上挂起

如何从内核树中构建BPF程序

在 Win8 中使用 GCC、C::B 安装 Ogre3D

退出程序时抛出异常(Ogre3d)

如何在Ogre3d中正确地向Hardwarepixelbuffer提供数据?

转载Ogre3d 2.1 源码编译安装教程