我没有心事往事只是只蚂蚁,生下来胳膊大腿就是一样细

CMake

上一篇 / 下一篇  2008-04-10 13:36:41 / 个人分类:tech

开发的程序是linux版的,但是程序员都是习惯用vc的,所以多平台编译是必须支持的。

原来都是两套东西,一套是windows下面vc的工程文件,一套是linux下面的autotool。和平共存,同时维护,但都有各自的缺点。

vc的工程文件创建是非常容易的,但是修改起来就稍微费事了,需要一个一个工程的设置,如果遇到目录结构变更,修改起来还是有点痛苦的。

autotool这套东西缺点是难于创建,你要搞清楚autoconf/automake之间的关系,然后学一大堆互不相同的文法,优点是一旦写好了,小修改还是比较省心的,但大修改也同样很头疼。

所以这次我选了CMake来做这事,首先它的语法简单,你按照它的语法可以很容易写出listfiles,然后再用cmake把这些listfiles转换成你所需要的vc工程文件、或者makefiles。修改起来也是相当的省事。好得很。

类似的工具,我还考虑过Bakefile,这个东西的优势是用xml(有点类似java里面的ant),如果类比的话,可以认为cmake是c,而bakefile是c++。bakefile的缺点主要是没有集成auto config的功能,所以在linux平台上,如果生成autoconf那套东西,还要自己写autoconf的脚本。

我之所以选择CMake,两个原因,一是KDE也是抛弃了autotool转向CMake,看了很受鼓舞;另一个是CMake的手册只是一个html文件,而Bakefile是一堆。呵呵。但是从长远看,我觉得Bakefile才是明日之星啊,也许这是因为我对xml有特殊好感,呵呵。

另外一个小问题,我在写一个脚本的时候发现windows下面的RD命令居然不支持通配符,打开你的命令行窗口,试试这个
MD test.dir
RD *.dir
RD test.*
网上也查不到这个问题的解决,后来还是自己找到了一个办法:
for /d %%C in (*.dir) do RD /s /q %%C
这个只能在批处理脚本里面执行,而且看上去很吓人,但终归是一个解决办法嘛。



TAG:

引用 删除 hslyliu   /   2008-04-17 17:11:15
5
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar