开发的程序是
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
这个只能在批处理脚本里面执行,而且看上去很吓人,但终归是一个解决办法嘛。