windows平台下用CMake编译osg

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

1):在CMake图形界面中的“Where is the source code:”的编辑框中输入你的osg源码目录,注意:只能在代码的主目录,而不能在子目录,只能在CMakeList.txt所在目录,如:只能在youdir/OpenSceneGraph-OpenSceneGraph-3.4.1级目录,而不能是youdir/OpenSceneGraph-OpenSceneGraph-3.4.1/src目录,其中youdir是你存放OpenSceneGraph-OpenSceneGraph-3.4.1的目录。意:目录路径不能有中文,否则CMake会报错。 
2):在“Where to build the binaries”中输入你想osg编译、链接后生成文件的存放目录。
CMake图形界面下方如果出现“Coulde Not find  XXX”之类的提示,证明某些库没有找到,如果这些库对你现在从事的项目需求无关紧要,请忽略它,直接跳到第6步;如果你需要,则此时就需要从第三方库的官网上下载,如果没有该提示,请直接转到第6步。例如:freetype库没有找到,则去freetype官网下载其源码,并用vs编译出freetype的库,注意:对于用vs编译生成的第三方库的lib文件名最好遵循下述命名规则:
  •            debug版的文件名加d,如:freetyped.lib
  •            release版的文件名不加d,如freetype.lib
     如果不是,则请在vs中的工程属性中根据debug还是release做相应的文件名修改。如果debug版的文件名不加d,则后续cmake生成vs的工程文件有时会报类似如下警告:
     
            -- Warning can not find freetyped.lib,so try to use freetype.lib
一旦报上述类似警告,则不会生成该工程的vs工程文件(本例指基于osg的freetype 的vs工程
3):将步骤2中的生成的lib放到osg的第三方库目录下的lib目录下,如本例指3rdparty/x64/lib目录
        其中3rdparty为第三方库目录,如果没有第三方库目录,请到 “osg第三方库”下载并解压。
4):将步骤2中生成的dll文件放到第三方库目录下的bin目录下,如本例指3rdparty/x64/bin目录
5):将步骤2中下载的第三方库中include文件夹下的所有目录和文件拷贝到第三方库目录下的include目录下,如本例指3rdparty/x64/include目录
6):点击cmake图形界面中的“configure”按钮,在出现的“ACTUAL_3RDPARTY_DIR”选择第三方库存放目录,注意:要定位到cpu的类型子目录如:XX/3rdparty/x64,而不是XX/3rdparty
7):再次单击cmake图形界面中的“configure”按钮,直到要编译的该第三库不出现任何错误和警告为止。
8):单击cmake图形界面中的“generate”按钮,如果没有问题,则会生成该库的vs工程文件,找到该vs工程文件编译就可以生成osg包装过的第三方库,如本例中osg_freetyped.dll(debug版)、osg_freetyped.lib(debug版)、osg_freetype.dll(release版)、osg_freetype.dll(release版)

版权声明:本文为danshiming原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。