最近要用到OpenSceneGraph得编译它,但MacOS使用开源软件确实比linux和windows麻烦。
第一轮,修改portfile
我使用MacPorts管理软件,能正常安装OSG,而且是最新版本,但默认没有编译osgQt,我研究很久,才发现可以通过修改portfile实现
sudo port edit OpenSceneGraph # 打开OSG配置文件在最后几行找到了选项,默认是关闭的,
将OSG_USE_QT:BOOL=OFF 改为 OSG_USE_QT:BOOL=ON满心欢喜以为成功了,结果cmake还是找不到osgQt。
但有一点,所有的依赖库者装上了,算成功了一半。
第二轮,手动控制安装流程
在研究MacPorts软件管理流程后,我手动控制OSG的配置、编译与安装,可参考 http://blog.csdn.net/lainegates/article/details/46240891
sudo port configure OpenSceneGraph sudo port build OpenSceneGraph sudo port destroot OpenSceneGraph #这个必须有,否则MacPorts还是会下载编译好的OSG sudo port install OpenSceneGraph这将次找得到osgQt了,我以为大功告成了,结果我还是太年经。在使用OSG编译我的软件的时候,出现类似于 “symbol osgText::readFontFile not found” 和 "symbol osgText::Text::setText not found" 的错误。
第三轮,出奇制胜
我研究好几天,初步确定是OSG代码的问题,于是我将官网可下载的几个版本挨个下载试了一遍,结果还是错。真是好事多磨啊。
正在这时,我突然之前使用homebrew时,OSG是能正常编译的!于是我查找了homebrew的formula文件,发现 homebrew使用的是普通用户看不到的源代码链接:http://trac.openscenegraph.org/downloads/developer_releases/OpenSceneGraph-3.3.3.zip
使用这个代码编译后,一切正常。
这时我明白了MacPorts为什么在OSG上不使用编译的方式,是因为有问题。所以它下载特殊编译好的。
经过二年多的使用,发现MacOS在开源软件方面确实受限制,别的平台使用正常的软件在这个平台上有可能会出问题。