一.问题起源和定义
在使用VC开发时,当一个解决方案的工程数多达几十个甚至上百个,因为工程设置基本是一样的,因此修改工程项目属性成了一件单调的事情。这里所说的工程属性包括输出目录、中间目录、预处理器、第三方库头文件路径和第三方库文件路径等等。
传统上解决这个问题有两个办法:一个是自定义工程向导,通过自己的工程向导来生成具有统一设置的工程;二是使用属性表。但这两种办法有着严重的弊端:使用工程向导只是新建工程时可以统一设置,一旦以后有属性选项修改,还是得一一进行修改;属性表我发现只局限于设置第三方库的头文件和库文件,同时也必须在每个工程一一加上属性表(这个也可能我对属性表使用不熟有关,请熟悉的同学告诉我)。
因此我需要一个批量修改工程属性的工具。
二.解决方案和已完成的工作
于是利用周六一点时间开发了一个小工具SetPrjProps。SetPrjProps是这样工作的:
SetPrjProps被设计一个命令行工具,其用法如下:
SetPrjProps ini文件 sln文件
例如: SetPrjProps D:\dev-utility-tools\src\bcg_props.ini D:\dev-utility-tools\src\Test.sln
到时把SetPrjProps放在源码目录下,使用一个批处理文件就能调用。
目前批量修改一个解决方案下的所有VC工程的属性已经实现,修改的工程属性涉及输出目录、中间目录、第三方库的头文件和库文件等等(目前仅支持VS2008的MFC、Win 32和控制台工程),具体请见源码。
VS解决方案文件和VC工程文件格式简单说明
经过我研究,VS解决方案文件只是一个简单的文本文件,并非我之前以为的xml文件,所记录的工程路径包括两种:和解决方案文件处在同级目录的是相对路径,否则是绝对路径;VC工程文件则是一个xml文件,保存的是有意义的信息,即某项属性设置为空,则不保存到VC工程文件。
源码已上传至http://code.google.com/p/dev-utility-tools/source,采用GPL V2.0开源协议,有兴趣请下载看看。