zoukankan      html  css  js  c++  java
  • VS2008 自定义向导的default.js设置(DLL文件)

    function OnFinish(selProj, selObj)
    {
        try
        {
            var strProjectPath = wizard.FindSymbol('PROJECT_PATH');
            var strProjectName = wizard.FindSymbol('PROJECT_NAME');
    
            selProj = CreateCustomProject(strProjectName, strProjectPath);
            AddConfig(selProj, strProjectName);
            AddFilters(selProj);
    
            var InfFile = CreateCustomInfFile();
            AddFilesToCustomProj(selProj, strProjectName, strProjectPath, InfFile);
            PchSettings(selProj);
            InfFile.Delete();
    
            selProj.Object.Save();
        }
        catch(e)
        {
            if (e.description.length != 0)
                SetErrorInfo(e);
            return e.number
        }
    }
    
    function CreateCustomProject(strProjectName, strProjectPath)
    {
        try
        {
            var strProjTemplatePath = wizard.FindSymbol('PROJECT_TEMPLATE_PATH');
            var strProjTemplate = '';
            strProjTemplate = strProjTemplatePath + '\default.vcproj';
    
            var Solution = dte.Solution;
            var strSolutionName = "";
            if (wizard.FindSymbol("CLOSE_SOLUTION"))
            {
                Solution.Close();
                strSolutionName = wizard.FindSymbol("VS_SOLUTION_NAME");
                if (strSolutionName.length)
                {
                    var strSolutionPath = strProjectPath.substr(0, strProjectPath.length - strProjectName.length);
                    Solution.Create(strSolutionPath, strSolutionName);
                }
            }
    
            var strProjectNameWithExt = '';
            strProjectNameWithExt = strProjectName + '.vcproj';
    
            var oTarget = wizard.FindSymbol("TARGET");
            var prj;
            if (wizard.FindSymbol("WIZARD_TYPE") == vsWizardAddSubProject)  // vsWizardAddSubProject
            {
                var prjItem = oTarget.AddFromTemplate(strProjTemplate, strProjectNameWithExt);
                prj = prjItem.SubProject;
            }
            else
            {
                prj = oTarget.AddFromTemplate(strProjTemplate, strProjectPath, strProjectNameWithExt);
            }
            var fxtarget = wizard.FindSymbol("TARGET_FRAMEWORK_VERSION");
            if (fxtarget != null && fxtarget != "")
            {
                fxtarget = fxtarget.split('.', 2);
                if (fxtarget.length == 2)
                prj.Object.TargetFrameworkVersion = parseInt(fxtarget[0]) * 0x10000 + parseInt(fxtarget[1])
            }
            return prj;
        }
        catch(e)
        {
            throw e;
        }
    }
    
    function AddFilters(proj)
    {
        try
        {
            // 将文件夹添加到项目
    //        var strSrcFilter = wizard.FindSymbol('SOURCE_FILTER');
    //        var group = proj.Object.AddFilter('源文件');
    //        group.Filter = strSrcFilter;
            proj.Object.AddFilter('源文件').Filter = 'cpp;c;def';
            proj.Object.AddFilter('头文件').Filter = 'hpp;h';
            proj.Object.AddFilter('资源文件').Filter = 'ico;rc;bin';
         }
        catch(e)
        {
            throw e;
        }
    }
    
    function AddConfig(proj, strProjectName)
    {
        try
        {
            var config = proj.Object.Configurations('Debug');
            config.CharacterSet = charSetUNICODE;
            config.ConfigurationType = typeDynamicLibrary;
            config.IntermediateDirectory = '$(ConfigurationName)';
            config.OutputDirectory = '$(ConfigurationName)';
    
            var CLTool = config.Tools('VCCLCompilerTool');
            // TODO: 添加编译器设置
            CLTool.RuntimeLibrary = rtMultiThreadedDebugDLL;
            
            var strDefines = CLTool.PreprocessorDefinitions;
            if (strDefines != "") strDefines += ";";
            strDefines += GetPlatformDefine(config);
            strDefines += "_DEBUG";        
            strDefines += ";_WINDOWS;_USRDLL;";
            var strExports = strProjectName.toString().toUpperCase() + "_EXPORTS";
            strDefines += strExports;
            CLTool.PreprocessorDefinitions = strDefines;
            CLTool.DebugInformationFormat = debugEditAndContinue;
            
            var LinkTool = config.Tools('VCLinkerTool');
            // TODO: 添加链接器设置
            LinkTool.ModuleDefinitionFile = strProjectName+".def";
            LinkTool.GenerateDebugInformation = true;
            LinkTool.SubSystem = subSystemWindows;
            
            config = proj.Object.Configurations('Release');
            config.IntermediateDirectory = '$(ConfigurationName)';
            config.OutputDirectory = '$(ConfigurationName)';
            config.CharacterSet = charSetUNICODE;
            config.ConfigurationType = typeDynamicLibrary;
    
            var CLTool = config.Tools('VCCLCompilerTool');
            // TODO: 添加编译器设置
            CLTool.RuntimeLibrary = rtMultiThreadedDLL;
            
            var strDefines = CLTool.PreprocessorDefinitions;
            if (strDefines != "") strDefines += ";";
            strDefines += GetPlatformDefine(config);
            strDefines += "NDEBUG"
            strDefines += ";_WINDOWS;_USRDLL;";
            var strExports = strProjectName.toString().toUpperCase() + "_EXPORTS";
            strDefines += strExports;
            CLTool.PreprocessorDefinitions = strDefines;
            CLTool.DebugInformationFormat = debugEnabled;
    
            var LinkTool = config.Tools('VCLinkerTool');
            // TODO: 添加链接器设置
            LinkTool.ModuleDefinitionFile = strProjectName+".def";
            LinkTool.GenerateDebugInformation = true;
            LinkTool.SubSystem = subSystemWindows;
        }
        catch(e)
        {
            throw e;
        }
    }
    
    function PchSettings(proj)
    {
        // TODO: 指定 pch 设置
    }
    
    function DelFile(fso, strWizTempFile)
    {
        try
        {
            if (fso.FileExists(strWizTempFile))
            {
                var tmpFile = fso.GetFile(strWizTempFile);
                tmpFile.Delete();
            }
        }
        catch(e)
        {
            throw e;
        }
    }
    
    function CreateCustomInfFile()
    {
        try
        {
            var fso, TemplatesFolder, TemplateFiles, strTemplate;
            fso = new ActiveXObject('Scripting.FileSystemObject');
    
            var TemporaryFolder = 2;
            var tfolder = fso.GetSpecialFolder(TemporaryFolder);
            var strTempFolder = tfolder.Drive + '\' + tfolder.Name;
    
            var strWizTempFile = strTempFolder + "\" + fso.GetTempName();
    
            var strTemplatePath = wizard.FindSymbol('TEMPLATES_PATH');
            var strInfFile = strTemplatePath + '\Templates.inf';
            wizard.RenderTemplate(strInfFile, strWizTempFile);
    
            var WizTempFile = fso.GetFile(strWizTempFile);
            return WizTempFile;
        }
        catch(e)
        {
            throw e;
        }
    }
    
    function GetTargetName(strName, strProjectName)
    {
        try
        {
            // TODO: 基于模板文件名设置呈现文件的名称
            var strTarget = strName;
    
            if (strName == 'readme.txt')
                strTarget = 'ReadMe.txt';
    
            if (strName == 'MoonDriver.cpp')
                strTarget =strProjectName+ '.cpp';
            if (strName == 'MoonDriver.def')
                strTarget =strProjectName+ '.def';
            if (strName == 'MoonDriver.h')
                strTarget =strProjectName+ '.h';
    
            return strTarget;
        }
        catch(e)
        {
            throw e;
        }
    }
    
    function AddFilesToCustomProj(proj, strProjectName, strProjectPath, InfFile)
    {
        try
        {
            var projItems = proj.ProjectItems
    
            var strTemplatePath = wizard.FindSymbol('TEMPLATES_PATH');
    
            var strTpl = '';
            var strName = '';
    
            var strTextStream = InfFile.OpenAsTextStream(1, -2);
            while (!strTextStream.AtEndOfStream)
            {
                strTpl = strTextStream.ReadLine();
                if (strTpl != '')
                {
                    strName = strTpl;
                    var strTarget = GetTargetName(strName, strProjectName);
                    var strTemplate = strTemplatePath + '\' + strTpl;
                    var strFile = strProjectPath + '\' + strTarget;
    
                    var bCopyOnly = false;  //“true”仅将文件从 strTemplate 复制到 strTarget,而不对项目进行呈现/添加
                    var strExt = strName.substr(strName.lastIndexOf("."));
                    if(strExt==".bmp" || strExt==".ico" || strExt==".gif" || strExt==".rtf" || strExt==".css"|| strExt==".lib")
                        bCopyOnly = true;
                    wizard.RenderTemplate(strTemplate, strFile, bCopyOnly);
                    proj.Object.AddFile(strFile);
                }
            }
            strTextStream.Close();
        }
        catch(e)
        {
            throw e;
        }
    }
  • 相关阅读:
    数学+高精度 ZOJ 2313 Chinese Girls' Amusement
    最短路(Bellman_Ford) POJ 1860 Currency Exchange
    贪心 Gym 100502E Opening Ceremony
    概率 Gym 100502D Dice Game
    判断 Gym 100502K Train Passengers
    BFS POJ 3278 Catch That Cow
    DFS POJ 2362 Square
    DFS ZOJ 1002/HDOJ 1045 Fire Net
    组合数学(全排列)+DFS CSU 1563 Lexicography
    stack UVA 442 Matrix Chain Multiplication
  • 原文地址:https://www.cnblogs.com/elonlee/p/3878596.html
Copyright © 2011-2022 走看看