Ogre1学习笔记1——建立Ogre项目
子曰:先跑起来再说。
本文将介绍构建Ogre项目的一般流程,代码部分采用官方的Bootstrap.cpp
中的内容。
本文参考了官方英文教程Setting up an OGRE project,但采用Makefile来建立Ogre项目,而不是英文教程中的cmake来建立。
复制代码并编写Makefile
Bootstrap.cpp
的源代码可以在Ogre源码中找到,其具体位置在ogre-1.12.6/Samples/Tutorials/Bootstrap.cpp
中。
在写Makefile时,有以下几点需要注意:
- 链接时需要额外添加Ogre的几个库文件。
这里需要添加OgreMain
、OgreBites
、OgreRTShaderSystem
和zzip
等4个库,因此需要添加-lOgreMain -lOgreBites -lOgreRTShaderSystem -lzzip
作为参数。 - 需要包含
zzip
的所在路径。
zzip
是在编译安装Ogre源码时生成的库文件,其路径是ogre-1.12.6/build/Dependencies/lib
,因此在编译时需要添加-L/home/username/Documents/ogre-1.12.6/build/Dependencies/lib
,这里/home/username/Documents/
是Ogre源代码所在文件夹。 - 需要添加头文件路径。
Bootstrap.cpp
中所需头文件所在目录有3个:/usr/include/OGRE/
、/usr/include/OGRE/Bites/
和/usr/include/OGRE/RTShaderSystem/
,因此在编译时需要添加-I/usr/include/OGRE/ -I/usr/include/OGRE/Bites/ -I/usr/include/OGRE/RTShaderSystem/
作为参数。 - 需要添加rpath
因为zzip
所在目录不是标准位置,因此需要添加-rpath
,否则会出现编译成功但运行时报错的问题。因此在编译时需要添加-Wl,-rpath /home/username/Documents/ogre-1.12.6/build/Dependencies/lib
作为参数。
此外,还需要将/usr/share/OGRE/
中的resources.cfg
拷贝到当前文件夹,以免出现找不到Sinbad.mesh
的错误。
运行代码
完整的Makefile文件类似这个样子:
CXX = g++
CXXFLAGS = -std=c++17 -g -Wall
LIBS = -lOgreMain -lOgreBites -lOgreRTShaderSystem -lzzip
LIB_PATH = -L/home/username/Documents/ogre-1.12.6/build/Dependencies/lib
RPATH = -Wl,-rpath /home/username/Documents/ogre-1.12.6/build/Dependencies/lib
INCLUDE = -I/usr/include/OGRE/ -I/usr/include/OGRE/Bites/ -I/usr/include/OGRE/RTShaderSystem/
TAR = Bootstrap
EXT =
$(TAR)$(EXT): $(TAR).cpp
$(CXX) $< -o $@ $(CXXFLAGS) $(RPATH) $(LIBS) $(LIB_PATH) $(INCLUDE)
clean:
-rm $(TAR)$(EXT)
此时当前文件夹中应该是这个样子:
.
├── Bootstrap.cpp
├── Makefile
└── resources.cfg
运行代码:
make
./Bootstrap
运行结果:
在这个画面按Esc
键即可退出。