使用JScript编译指定目录下所有工程
2013-08-22 22:51
162 查看
作者:朱金灿
来源:http://blog.csdn.net/clever101
我遇到这样一个问题:在一个插件工程目录下的插件工程越来越多,因此通过建一个解决方案然后把新增加的工程逐个添加进解决方案变得越来越繁琐。我设想使用Jscript编程通过创建一个空的解决方案,然后遍历该文件夹下的vc工程,把该文件夹的vc工程都加到这个空的解决方案,然后编译这个解决方案。今天鼓捣了,成功了。开始以为只需新建一个空解决方案,然后把所有工程加到这个解决方案就行,后来发现不行,解决方案文件无法生成,想了折中的办法,为一个工程创建一个解决方案。废话不说了,贴上代码:
来源:http://blog.csdn.net/clever101
我遇到这样一个问题:在一个插件工程目录下的插件工程越来越多,因此通过建一个解决方案然后把新增加的工程逐个添加进解决方案变得越来越繁琐。我设想使用Jscript编程通过创建一个空的解决方案,然后遍历该文件夹下的vc工程,把该文件夹的vc工程都加到这个空的解决方案,然后编译这个解决方案。今天鼓捣了,成功了。开始以为只需新建一个空解决方案,然后把所有工程加到这个解决方案就行,后来发现不行,解决方案文件无法生成,想了折中的办法,为一个工程创建一个解决方案。废话不说了,贴上代码:
main(); function main() { try { var WSShell = WScript.CreateObject("WScript.Shell"); var num = WScript.ScriptFullName.lastIndexOf("\\"); // 获取当前路径 var strCurPath = WScript.ScriptFullName.substr(0,num); var FileSys = WScript.CreateObject("Scripting.FileSystemObject"); // 判断当前文件夹是否存在 if (FileSys.FolderExists(strCurPath)) { // 获取vs2008d的dte对象 var DTE = new ActiveXObject("VisualStudio.DTE.9.0"); DTE.MainWindow.Visible = false; var strPluginFolder = strCurPath + "\\Plugin"; // 判断临时文件夹是否存在,若不存在就创建。临时文件夹用于存放创建 var strTempPath = strCurPath + "\\temp"; if(!FileSys.FolderExists(strTempPath)) { FileSys.CreateFolder(strTempPath); } var PluginFolder = FileSys.GetFolder(strPluginFolder); // 获取所有子文件夹,遍历所有的子文件夹 var PlugSet = new Enumerator(PluginFolder.SubFolders); for (var i = 0 ; !PlugSet.atEnd(); PlugSet.moveNext(),i++) { var strSlnIndex = i; var strProjectFolder = strPluginFolder + "\\"; strProjectFolder = strProjectFolder + PlugSet.item().Name; var ProjectFolder = FileSys.GetFolder(strProjectFolder); // 获取所有的文件 var fenum = new Enumerator(ProjectFolder.Files); for (var j = 0 ; !fenum.atEnd(); fenum.moveNext(),j++) { var strPrjFileName = fenum.item().Name; var strSuff = FileSys.GetExtensionName(strPrjFileName); // 假如文件是vc工程文件,就执行编译 if((strSuff=="vcproj")) { var sln = DTE.Solution; sln.Create(strCurPath,strSlnIndex); var strProjectFolder = strProjectFolder + "\\"; strPrjFileName = strProjectFolder + strPrjFileName; sln.AddFromFile(strPrjFileName); strSlnIndex = strSlnIndex + ".sln"; var strSolution = strTempPath+"\\"; strSolution = strSolution+strSlnIndex sln.SaveAs(strSolution); var solbuild = sln.SolutionBuild; // 编译release版本 solbuild.SolutionConfigurations.Item("Release").Activate() solbuild.Build(true); // 编译debug版本 solbuild.SolutionConfigurations.Item("Debug").Activate() solbuild.Build(true); break; } } } } else { WScript.Echo("the current path isnot exist!"); return; } } catch(e) { WScript.Echo(e.description); } }
相关文章推荐
- 使用JScript编译指定目录下所有工程
- 使用javac命令行编译一个目录下的所有.java文件?
- 关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(1)
- 编译libfdk-aac 库,使用根目录下的android.mk直接包含所有子目录下的android.mk文件
- 使用boost filesystem 库实现枚举指定目录下的所有jpeg图片;
- C#使用线程加载指定目录下的所有子目录和文件名称到TreeView中
- 使用Python批量替换指定目录所有文件中的指定文本
- C#使用线程加载指定目录下的所有子目录和文件名称到TreeView中
- C#使用线程加载指定目录下的所有子目录和文件名称到TreeView中
- 一个使用多线程删除指定目录及子目录下所有指定文件的Java程序(源码)
- 查找指定目录下所有文件(包括子目录)——使用递归
- MS-DOS下使用命令行注册指定目录下所有dll进注册表
- 黑马程序员-列出一个目录中所有指定文件,使用FilenameFilter类
- C# 使用 DirectoryInfo 递归指定目录中的所有目录及文件
- 如何使用C语言搜索指定目录下的所有文件?
- Linux监控系统磁盘使用比例,当使用率达到指定比例,删除指定目录下的所有文件的shell脚本
- 使用grep指令在当前目录下所有文件中搜索指定文本
- 我的Android进阶之旅------>Android使用正则表达式匹配扫描指定目录下的所有媒体文件(音乐、图像、视频文件)
- 使用线程加载指定目录下的所有子目录和文件名称到TreeView中
- 关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(2)