OSG源码中CMakeLists文件分析
我所使用的OSG是SVN管理的版本。接下来就来分析一下整个Cmake的执行过程。
1、 设置Cmake的一些属性,具体有兴趣的读者可以自行学习。
2、 判断平台。当然这里姑且认为是Win32平台。那么接下来判断Cmake的版本,2.4.6是最小的需求的Cmake版本。
3、 设置Cmake的策略。
4、 接下来进入工程OpenSceneGraph
5、 设定版本号2.9.15
6、 将plugin后面加上版本号,这就是我们看到的生成的那个plugin+版本号文件夹
7、 如果是cygwin那么plugin前缀加上cygwin_
8、 如果是mingw那么plugin前缀加上mingw_
9、 将OpenThreads_SOURCE_DIR设定为OpenSceneGraph_SOURCE_DIR,OpenSceneGraph_SOURCE_DIR即为我们在Cmake输入的源码路径。
10、 设定CMAKE_MODULE_PATH为源码主目录下的CMakeModules文件夹。
11、 是否使用AndroidNDK,这里略去这部分的分析。
12、 接下来是OSG的一些修补工作
13、 是否在SVN下编译,略过
14、 判断Apple平台下
15、 判断Unix系统下
16、 将INCLUDE_DIRECTORIES设定为主目录下的include文件夹
17、 如果要编译的include与当前include不在同一目录下,那么使用要生成的目录下的include
18、 Win32平台下
19、 开启vs2005或更高编译器的MP选项
20、 将MP选项设为高级,这也就是为什么我们configure完之后在simpleview中不能看到这一选项而在Advancedview中可以看到这一选项的原因。
21、 开启DYNAMICBASE,主要修补win7下的一个bug
22、 其他的MSVC一些项目属性设置选项
23、 设定socket
24、 接下来时MSVC独有的关于项目属性的设置,略去
25、 Luigi编译使用相关配置
26、 OSG的debug信息等级是否设定
27、 是否使用float矩阵,该项设置作为高级设置,在Advanced View中可以看出
28、 是否使用float数组,高级设置
29、 是否使用float天空盒,高级设置
30、 是否使用UTF-8来作为文件名的编码格式
31、 MSVC的Warning是否省去,高级设置
32、 是否进行ref_ptr<> T* operator()转化
33、 OpenGL和OpenGLES的设定
34、 是否关闭使用了C++中的异常处理的CPP文件
35、 设置OSG文件夹的配置文件
36、 设置Version的配置文件
37、 指示安装位置安装在include/osg下的配置文件夹下
38、 设置MSVC和OSG相关的版本信息,后缀名是rc
39、 可选编译部分
40、 是否编译OSG 的Applications,可能由于每个版本的OSG的Application的版本相差不多吧
41、 是否编译OSG的相关例子,即大家熟悉的Example文件夹
42、 第三方工具的设置
43、 是否指定QT版本
44、 接下来寻找第三方库的相关配置在这里略去
45、 如需要创建bin和lib文件夹
46、 设置debug版还是release版
47、 在其他平台上设置debug信息
48、 感谢您的贡献,我个人的建议是这个教程可以结合实际的cmake代码来呈现,否则读起来会有些困难,比如:
23、 设定socket这样的描述大家都难免有些糊涂~~呵呵,期待能够完善这篇具有一定实用性的教程 呵呵,关于这个文档接下来会有更加详细的分析说明。
对了,你之前的cmake的资料写完了?? 我没有专门写什么cmake的资料,目前也没有时间去写 我记得你之前写过这方面的资料,呵呵,后来好像没有继续下去了
页:
[1]