OGRE3D 使用CMake + MinGW Make源码编译安装
本文更倾向于一种日志记录,所以有些地方可能写的不会太清楚,若有读者无法理解其中某些地方还请多多谅解(学习路桑就是苦逼地不断csdn和stackoverflow…@_@)
官网下载源码
OGRE官网直接百度即可,一般全是英文的那一条链接就是。
根据官方文档进行CMakeGUI编译,以及遇到的坑
官方初学者文档链接:链接 博主选择使用MinGW Make和GNU g++来使用ORGE,因为VS2019实在是太重型,过于笨重了,开一个项目要好久。推荐大家学习使用CMake,感觉以后上班配套VS的可能性不大(估计都是VScode),这种IDE的商用版本好贵的似乎。 CMakeGUI一开始使用的时候不是很习惯,特别是这个Configure,没弄懂是干嘛的,可能是读入源码目录下CMakeLists文件生成缓存先,读取所有的CMakeLists变量值,然后通过修改这些值就相当于CMake的时候加了各种 -D参数选项?(以前还一直以为源码目录是指解压出来以后包含各个cpp文件的那个文件夹,后来才发觉就直接是解压出来的那个文件夹>︿<)
首先,官网要求CMake版本至少3.10(挺高啊)。根据官方文档选择好源码目录(就是下载源码压缩包后解压出来的唯一的那个文件夹)选择好构建的目标存放目录(一般是直接在源码目录下新建一个名为‘build’的文件夹,选择它),点击Configure,弹出选择你所需要的构建套件,我这里是选了MinGW MakeFile,然后就会生成如上图的红色一片。
因为win10基本都是DirectX11了,所以OGRE渲染系统中,我没有勾选D3D9(勾上也不是不行),当然我也不需要移动版OpenGL(GLES2),由于我没有装Vulkan当然也就没有勾选这个(另外Tiny是什么鬼?之前真的没听过这个图形库)。WIN10自带DirectX SDK还有opengl32.lib,因此GL和D3D11我都勾上了。
没有imgui.cpp?
首先根据官方文档指示,我读到这段话: 在CMakeGUI中运行config将对所有依赖项自动安装,然而在上一步中,如果我们点击configure得到一片红之后再次configure确认值之后,点击generate,可能会报错(至少我报错了),一般来说控制台输出的红色信息都是Error导致无法正常进行下去的。
我这里说:没有找到imgui-1.85/imgui.cpp这个文件导致依赖库无法生成,我当时就一脸懵逼,这官网上的推荐依赖也没说有imgui这玩意啊???然后我在build目录下发现,它确实尝试生成了一个叫imgui-1.85的文件夹,然而里面只有一个imconfig.h头文件,确实没有任何cpp实现文件。 百度一番,发现这玩意还真不得了,Blender的界面不会是这个做的吧?它的全名叫Dear ImGui,看样子应该就是类似于不使用Qt Designer纯代码完成控件排版的窗口界面工具。这里是它的各个发行版本
下载1.85版本的imgui,解压,惊奇的发现这玩意根目录下没有CMakeLists。。。好家伙,这个库每次使用直接和自己的其他源代码放一起是吧。。。没关系,根目录下的文件除了imconfig.h全部一股脑塞到刚才的imgui-1.85文件夹中,再次在CMakeGUI中点击generate,这回OK了。generate完之后关掉CMakeGUI吧,生成好MakeFile文件之后CMakeGUI就完成任务了。
然后根据官网提示,在build目录下,开命令行(如果你是MSVC构建的话应该直接双击.sln文件,确保你已经装了VS2019或者VS其他版本)执行构建命令: 这里和我在Linux下熟悉的两连击不同cmake. . make,不过作用应该是相同的,都是构建目标文件。
D3D相关的undefined reference to
由于之前我自己又另外从微软官网下了一套DirectX SDK,是龙书DX12学习需要的,结果构建的时候自动检测到DX12这个非win10自带的DirectX了,构建到30%多时,总是说blablabla没有定义,当然没有定义呀,我自己下载的DX12,那个文件夹里面的库(library)中的函数和DX11对不上也很正常,所以遇到这种问题的小伙伴看看是不是自己额外下载了其他版本的DirectX SDK,稍微改动一下文件夹名称或者检查一下有没有指向其他DX SDK的环境变量Path?
结尾
最后官网还推荐将构建好的目标库给你打包到一个单独的文件夹方便后续急中地使用而不用指定到各个模块或者插件的构建目录去。 这么一说…原来之前Linux下的make install其实就是把构建好的库和include文件拷贝到/usr/include和/usr/lib吗?!知道详情的小伙伴可以留言呀。
|