距离第一次使用CMake已经3~4个月了,虽然这个工具能由彻头彻尾的源代码生成各种IDE下面的项目
但我还是感到很不爽,因为所生成出来的项目并不完全等同于真正意义上的实打实的项目,这个不容易理解
我可以举个例子,如同我将box2d的源码生成为VS2005的项目之后
ok,虽然双击build出来的.sln文件可以正常编译生成出来的项目,但是,
实际上项目中的头文件还是在源码文件夹下面的,也就是说,
在这个生成出来的VS2005项目中,cpp文件,h文件只相当于源码文件夹中的快捷方式~
3个月前刚刚研究box2d源代码的时候,对box2d是刚认识,对c、c++也不熟练,对vs2005 c++部分更是不熟练
我就每天鼓捣项目设置,争取能够理解项目设置中每一项设置到底会影响到什么,就是下面这个图里面的东西:
我花了很长一段时间来摸索,因为我有一个很明确的目标,我要将box2d里面的所有源码文件copy到项目的文件夹里面
不再使用由cmake生成出来的那种所有源代码文件都被映射成快捷方式的项目,这样的话让我感觉自己对项目的结构了如指掌,踏实!
可以对比一下cmake生成出来的项目与真正包含.cpp,.h文件的项目之间的差别:
1.项目在文件系统中目录结构的对比:
下面是真正包含cpp,h文件的vs2005项目在文件系统中的目录结构
下面是由cmake生成出来的vs2005项目在文件系统中的目录结构(包含的是由源文件编译好的obj文件):
2.用vs2005打开项目之后的对比:
下面是我由源码重新构建(包括freeglut,glui这两个框架类库,使用的源码而非lib,dll文件)的box2d项目:
下面是由cmake构建出来的项目
(看着好像cpp文件就在项目文件夹中,实际上如上所述,这里所陈列的仅仅是如同快捷方式版的物件):
当然,这也仅仅只是我的个人意见,在大牛们看来,一份源码供多种IDE共同使用,这样很好!!
但是在我这个小菜菜看来,任何脱离我掌控的东西所带给我的都是迷惘,我必须要搞清楚其间的真相
这就是我对cmake所生成项目的看法~
有一天,我会试着去深入了解cmake所带来的好处,但是这个离现在应该还有蛮长一段时间~
3.Box2D压缩包解压后的目录层级结构:
CMakeGui由Box2D源码生成VS2005项目的配置