在mac10.10上编译ogre着实费了不少事,下面给出简要说明,希望对大家有帮助。
大致分三步:
1.准备:
1.1 安装依赖库及工具
用macports安装依赖库(homebrew 安装后链接出问题),代码如下:
sudo port install libpng +universal jpeg +universal libxml2 +universal sudo port install pkgconfig xmlto autoconf automake libtool sudo port install freetype +universal freeimage +universal libzzip +universal boost +universal ois +universal sudo port install cmake
然后打开“~/.bash_profile” 文件,添加系统路径
export CPPFLAGS="-I/opt/local/include" export LDFLAGS="-L/opt/local/lib"在终端加载新加路径
source ~/.bash_profile
ogre的源代码是用Mercurial管理的,这个软件需要安装(macports就可以安装),安装后
hg clone http://bitbucket.org/sinbad/ogre/ ogre在当前目录下下载到源代码
1.3 准备目录
mkdir ogre-build
ogre的编译需要指定 c++11 和 libstdc++ ,否则会出各种链接不到或者其他的错误。
cd ogre-build cmake -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -v -stdlib=libc++ -std=c++11" -DCMAKE_BUILD_TYPE="Debug" -DOGRE_BUILD_PLUGIN_CG=FALSE ../ogre make -j8 # 启动8线程,加快编译 make install3. 启动SampleBrower.app
步一步完成后,ogre所有的文件都在ogre-build/sdk目录下了。这时在系统路径里添加ogre路径,还是修改 "~/.bash_profile"文件
export OGRE_HOME="/Users/xxx/ogre/ogre-build/sdk" export OGRE_MEDIA_DIR="/Users/xxx/ogre-build/sdk/lib/OGRE/Samples"现在一切都准备好了,开始拷贝编译好的framework 库到SampleBrower.app下,否则找不到库。
# 拷贝编译好的ogre库 cd ogre-build/sdk/lib/debug/Debug/ cp -r *.framework ../../../bin/debug/SampleBrowser.app/Contents/Frameworks/ # 拷贝ogre例子 cd ../../OGRE/Samples/ cp *.dylib ../../../bin/debug/SampleBrowser.app/Contents/Plugins/
4. 附近加内容
SampleBrower.app正常运行后,也不代表你幸运。小缟在之后使用ogre的时候就出现了神奇的bug。
说我ogre的一个单件类没有实例化对象,SampleBrower.app都能跑,我的就错了,上哪说理去。
我修改代码之后正常运行了
修改的文件是 ogre/ogre-nochange/PlugIns/PCZSceneManager/src/OgrePCZoneFactory.cpp
PCZoneFactoryManager* PCZoneFactoryManager::getSingletonPtr(void) { if(!msSingleton) msSingleton = new PCZoneFactoryManager; // **** 添加内容 return msSingleton; } PCZoneFactoryManager& PCZoneFactoryManager::getSingleton(void) { if(!msSingleton) msSingleton = new PCZoneFactoryManager; // **** 添加内容 assert( msSingleton ); return ( *msSingleton ); }