windows平台下用CMake编译osg

      最近研究osg,用CMake工具将osg源码转为VS下的工程、解决方案,开始时不懂,走了很多弯路,现在将自己理解的记录下。

1.第三方库下载

Dependencies

windows平台下用CMake编译osg_第1张图片

我选择的是:

  • Full package for 64 bit https://download.osgvisual.org/3rdParty_VS2017_v141_x64_V11_full.7z

下载完成后,得到的压缩包名为“3rdParty_VS2017_v141_x64_V11_full.7z”。是由VS2017(v141)生成第三方库。解压放到E:\osg\3rdParty中,目录结构如下:

windows平台下用CMake编译osg_第2张图片

 将目录“E:\osg\3rdParty\x64\bin”加入系统环境变量Path中。 

 2.OSG数据资源的下载

下载网址:

Data Resources

windows平台下用CMake编译osg_第3张图片

下载完成后,得到的压缩包名为“OpenSceneGraph-Data-3.4.0.zip”。解压后,将其保存在目录“E:\osg\OpenSceneGraph-Data”中。 添加系统环境变量 OSG_FILE_PATH ,值为 E:\osg\OpenSceneGraph-Data 。

3.下载osg源码

  到OpenSceneGraph官网下载源码,我用的源码是OpenSceneGraph-3.6.2。解压源码,在E:\osg目录下新建一个build_osg3.6.2目录,用于后期编译。整个osg目录结构如下:

windows平台下用CMake编译osg_第4张图片

 4.CMake的下载和安装

Download | CMake

下载 CMake图形化工具,截至2023年4月5日,最新版本为3.26.3。直接双击安装即可。

5.编译源码

1):在CMake图形界面中的“Where is the source code:”的编辑框中输入osg源码目录,注意:该目录必须是CMakeList.stxt所在目录 目录路径不能有中文,否则CMake会报错。 
2):在“Where to build the binaries”中输入osg编译、链接后生成文件的存放目录。为避免编译产生的文件和源码混放在一起,一般在源码目录的同级目录新建一个build_osg3.6.2 目录来存放编译输出结果文件。像下图那样设置好第三方库目录,在CMake图形界面下方如果出现“Coulde Not find  XXX”之类的提示,证明某些库没有找到,如果这些库对现在从事的项目需求无关紧要,则不管它,直接跳到第3步;如果项目需要这些库,则就需从这些库官网下载并自己编译出该库,关于如何编译osg的第三方库插件,请参见
《osg第三方插件的编译方法(以jpeg插件来讲解)》博文。
设置好的界面类似如下:
windows平台下用CMake编译osg_第5张图片

 3):点击cmake图形界面中的“configure”按钮或“Tools->Configure”菜单,如果是初次执行,则弹出如下界面:

windows平台下用CMake编译osg_第6张图片

 根据本机装的VS选择VS版本,我本机装的vs2019。注意:后面一项得选x64,相信现在用win32的已经很少了。单击Finish按钮,关闭该对话框回到cmake主界面,单击左下角的“Genrerate”,稍等一会后,就会在build目录下生成.sln解决方案文件,单击“Open Project”按钮,打开该解决方案。

4):编译整个解 决方案。
5):如果编译整个解决方案完成且没有错误,就会在编译输出目录(如:前面提到的build_osg3.6.2 目录)输出osg的lib、dll、头文件。将
E:\osg\build_osg3.6.2/include/osg
E:\osg\build_osg3.6.2/include/OpenThreads
这两个目录下的所有头文件拷贝到源码目录的相应目录下,如:E:\osg\build_osg3.6.2/include/osg中的所有文件拷贝到E:\osg\OpenSceneGraph-OpenSceneGraph-3.6.2\include\osg;将E:\osg\build_osg3.6.2/include/OpenThreads中的所有文件拷贝到E:\osg\OpenSceneGraph-OpenSceneGraph-3.6.2\include\OpenThreads目录。后期开发自己的osg工程时会引用E:\osg\OpenSceneGraph-OpenSceneGraph-3.6.2\include目录中的文件,而该目录中的文件会引用E:\osg\build_osg3.6.2/include目录中的文件,如果不拷贝,则会报某些头文件找不到的错误。

你可能感兴趣的:(#,osg基础技术点,cmake编译osg)