鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > .net技术 > vs2010 > >

vc++ express添加自定义模板(二) 利用javascript修改项目模板属

来源:互联网 作者:佚名 时间:2013-06-19 11:37
这一章我们介绍使用javascript脚本设置项目模板属性,关于visual c++ IDE中利用模板创建项目的内部机制在本章尾的外文文章中已有详细介绍,所以这里我们只是简述一下。 函数介绍 当我们使用模板新建工程时,有时会弹出类似图2-1的项目设置对话框,这些对话框

      这一章我们介绍使用javascript脚本设置项目模板属性,关于visual c++ IDE中利用模板创建项目的内部机制在本章尾的外文文章中已有详细介绍,所以这里我们只是简述一下。

函数介绍

      当我们使用模板新建工程时,有时会弹出类似图2-1的项目设置对话框,这些对话框都是采用html + css制作出来的(我对于web前端开发并不熟悉,

win32set

                          图 2-1 Application项目设置

此处难免有笔误),包含了与项目相关的变量如WIN_APP,CONSOLE_APP,DLL_APP,LIB_APP,EMPTY_PROJECT等,将会在以后设置项目属性时用到。最后当我们点击完成时文件scripts/2052/default.js中的OnFinish(selProj , selObj)函数就会被调用来设置编译器链接器属性并创建新项目。

文件夹scripts/2052中的default.js文件主要有五个函数

  • OnFinish(selProj , selObj) : 当用户点击完成按钮后将调用此函数(像Win32控制台程序当点击创建项目后会直接调用此函数),然后调用GetAppType()得到项目类型,调用AddSpecificConfig()设置编译器和链接器属性,最后创建工程。

  • SetFileProperties(projfile , strName) :不明

  • GetTargetName(strName , strProjectName , strResPath , strHelppath) :更改文件名,这将在稍后介绍。

  • GetAppType() :得到项目类型(exe , dll , lib)。

  • AddSpecificConfig(proj, strProjectName, bEmptyProject, strAppType) :设置编译器和链接器属性。

  • 下面我们主要介绍OnFinish(selProj , selObj )函数,香港服务器,如代码 1-1所示,此函数在13行创建一个新的项目文件,香港服务器,就是vcxproj文件和sln文件(编译器与链接器属性设置都在vcxproj文件中),然后通过前面提到过的变量来修改项目属性。

    1: function OnFinish(selProj, selObj) 2: { 3: //selProj是我们将创建的工程对象 4: try 5: { 6: var strProjectPath = wizard.FindSymbol("PROJECT_PATH");//工程路径 7: var strProjectName = wizard.FindSymbol("PROJECT_NAME");//工程名 8:  9: var bEmptyProject = wizard.FindSymbol("EMPTY_PROJECT");//是否建立空工程 10:  11: wizard.AddSymbol("RC_FILE_NAME",CreateSafeRCFileName(strProjectName) + ".rc"); 12:  13: selProj = CreateProject(strProjectName, strProjectPath);//建立工程 14: selProj.Object.Keyword = "Win32Proj"; 15:  16: AddCommonConfig(selProj, strProjectName);//添加常规编译器,链接器设置 17: var strAppType = GetAppType(); //得到项目输出类型(exe,dll或lib) 18: AddSpecificConfig(selProj, strProjectName, bEmptyProject, strAppType);//添加自定义设置 19:  20: SetupFilters(selProj);//文件过滤,稍后介绍 21:  22: if (!bEmptyProject) 23: { 24: SetResDlgFont(); 25: //是否添加预编译头 26: var Pch = wizard.FindSymbol("PRE_COMPILED_HEADER"); 27: //(项目输出为LIB || 项目类型为控制台 ) && 项目不支持MFC && 项目不支持ATL && 项目不支持预编译头 28: if ((strAppType == "LIB" || ((strAppType == "CONSOLE") && 29: !wizard.FindSymbol("SUPPORT_MFC") && !wizard.FindSymbol("SUPPORT_ATL"))) && !Pch) 30: { 31: //添加文件到项目 32: AddFilesToProjectWithInfFile(selProj, strProjectName); 33: //设置不适用预编译头 34: SetNoPchSettings(selProj); 35: } 36: else 37: { 38: AddFilesToProjectWithInfFile(selProj, strProjectName); 39: SetCommonPchSettings(selProj); 40: } 41: } 42: selProj.Object.Save(); 43: } 44: catch(e) 45: { 46: if (e.description.length != 0) 47: SetErrorInfo(e); 48: return e.number 49: } 50: }

                                                                                 代码 1-1

    网友评论
    <