⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 default.js

📁 brew sdk2.0 for vs2005 产生C++ hellowolrd示例程序框架的向导工程 使用方法: 1、解压缩 2、将BREWAppWizardForCpp文件夹拷到vc200
💻 JS
字号:

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();

      // save the project
    	selProj.Object.Save();


      // vs 2005  quirk, that environment variables not parsed properly the first time, try closing the project
      // and reopening it
      var strSolutionFileName = strProjectPath + '\\' + strProjectName + ".sln";

      var Solution = dte.Solution;

      // save the solution (this prevents prompts to the user to save before closing in vs 2003)
      Solution.SaveAs(strSolutionFileName);
      Solution.close(true);

      ModifyRelativePaths(strProjectPath, strProjectName);

      // and reopen .. User should be blisfully unaware of this going on behind the scenes
      Solution.open(strSolutionFileName);


   }
   catch(e)
   {
      if (e.description.length != 0)
         SetErrorInfo(e);
      return e.number
   }
}
//*******************************************************************************//
// The following patch has been added for VS .NET 2003 where the AEEAppGen.c and 
// AEEModGen.c files get added to the project as ".\$(BREWDIR)\src\AEEAppGen.c" and
// ".\$(BREWDIR)\src\AEEModGen.c". This patch 'manualy' edits the vcproj file and removes
// the leading ".\"
// this is needed in vs studio 2003 and 2005, but not vs 2002
function ModifyRelativePaths(strProjectPath, strProjectName) 
{

        // variable that tells whether there have been any changes to the vcproj file
        var bChanged = false;
        
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        // Open the vcproj file
    	var projFile = fso.OpenTextFile(strProjectPath + '\\' + strProjectName + ".vcproj", 1);

        // create a temporary file
        var tname = fso.GetTempName();
        var tfile = fso.CreateTextFile(strProjectPath + '\\' + tname, true);

        // read the project file
   while (!projFile.AtEndOfStream) {
    	    var strLine = projFile.ReadLine();
    	    
    	    // Regular expression to match the string ".\(brewdir)"
    	    var re = /\.\\\$\(brewdir\)/i;
    	    
    	    // If the regular expression matches, then the vcproj file needs to be replaced
    	    if (strLine.match(re) != null)
    	        bChanged = true;
    	        
    	    // replace ".\$(brewdir)" with "$(BREWDIR)"
    	    strLine = strLine.replace(re, "$(BREWDIR)");

    	    tfile.WriteLine(strLine);
    	}
    	
    	tfile.Close();
    	projFile.Close();

        // delete the project file and rename the temp file to the project file
        // this causes Visual Studio to prompt the users to reload the project
        // Do this ONLY if the bChanged variable is set to true
   if (bChanged) {
            fso.DeleteFile(strProjectPath + '\\' + strProjectName + ".vcproj");
            fso.MoveFile(strProjectPath + '\\' + tname, strProjectPath + '\\' + strProjectName + ".vcproj");
   } else {
            // if we didn't rename the temp file to the vcproj file, then delete the tempfile
            fso.DeleteFile(strProjectPath + '\\' + tname);
        }
        
} 
//***********************************************************************************//



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);
		}
		return prj;
	}
	catch(e)
	{
		throw e;
	}
}

function AddFilters(proj)
{
	try
	{
		// Add the folders to your project
		var strSrcFilter = wizard.FindSymbol('SOURCE_FILTER');
		var group = proj.Object.AddFilter('Source Files');
		group.Filter = strSrcFilter;
	}
	catch(e)
	{
		throw e;
	}
}

function AddConfig(proj, strProjectName)
{
	try
	{
		// Start - DEBUG mode settings ###################################
		var config = proj.Object.Configurations('Debug');
		config.IntermediateDirectory = 'Debug';
      		config.OutputDirectory = '.';
		
		config.ConfigurationType = typeDynamicLibrary;
		
		// Add compiler settings ---------------------------------				
		var CLTool = config.Tools('VCCLCompilerTool');
		
		// Include directories
		CLTool.AdditionalIncludeDirectories += "$(BREWDIR)\\inc;"; 
		
		// Do not use precompiled header 
		CLTool.UsePrecompiledHeader = pchNone;
		
		// Use multithreaded debug library 
		CLTool.RuntimeLibrary = rtMultiThreadedDebug;
		
		// Preprocessor definitions
		var strDefines = GetPlatformDefine(config);
		strDefines += "_DEBUG;_WINDOWS;_USRDLL;AEE_SIMULATOR;";
		CLTool.PreprocessorDefinitions = strDefines;
		
		// Enable debug information in debug mode
		CLTool.DebugInformationFormat = debugEnabled;
		
		// Disable optimization in debug mode 
		CLTool.Optimization = optimizeDisabled;
		
		// Done adding compiler settings ---------------------------		
		
		// Add linker settings -------------------------------------		
		var LinkTool = config.Tools('VCLinkerTool');
		
		// subsystem, output path and filename
		LinkTool.SubSystem = subSystemWindows;
		LinkTool.ImportLibrary = "$(OutDir)/" + strProjectName + ".lib";
		LinkTool.OutputFile = "./" + strProjectName + ".dll";
		LinkTool.GenerateDebugInformation = true;
		// Done adding linker settings -----------------------------		

		// End - DEBUG mode settings ###################################
		// Start - RELEASE mode settings ###############################
		config = proj.Object.Configurations('Release');
		config.IntermediateDirectory = 'Release';
      config.OutputDirectory = '.';
			
		config.ConfigurationType = typeDynamicLibrary;

		// Add compiler settings ---------------------------------		
		var CLTool = config.Tools('VCCLCompilerTool');
		
		// Include directories
		CLTool.AdditionalIncludeDirectories += "$(BREWDIR)\\inc;"; 
		
		// Do not use precompiled header 
		CLTool.UsePrecompiledHeader = pchNone;
		
		// Use multithreaded library
		CLTool.RuntimeLibrary = rtMultiThreaded;
		
		// Preprocessor definitions
		var strDefines = GetPlatformDefine(config);
		strDefines += "_DEBUG;_WINDOWS;_USRDLL;AEE_SIMULATOR;";
		CLTool.PreprocessorDefinitions = strDefines;
		
		// Disable debug information in release mode
		CLTool.DebugInformationFormat = debugDisabled;
		
		// Optimize for speed in release mode
		CLTool.Optimization = optimizeMaxSpeed;		
		
		// Done adding compiler settings ---------------------------		
		
		// Add linker settings -------------------------------------		
		var LinkTool = config.Tools('VCLinkerTool');		
		
		// subsystem, output path and filename
		LinkTool.SubSystem = subSystemWindows;
		LinkTool.ImportLibrary = "$(OutDir)/" + strProjectName + ".lib";
		LinkTool.OutputFile = "./" + strProjectName + ".dll";
		// Done adding linker settings -----------------------------
		
		// End - RELEASE mode settings #################################
	}
	catch(e)
	{
		throw e;
	}
}

function PchSettings(proj)
{
   // TODO: specify pch settings
}

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
	{
		// Set the name of the rendered file based on the template filename
		var strTarget = strName;

		var strProjectName = wizard.FindSymbol('PROJECT_NAME');
      		if (strName == 'main.h') {
			// When the template file is main.h, we should rename it to
			// the PROJECT_NAME ...
			strTarget = strProjectName;
			strTarget += "App.h";
		}
		else if(strName == 'main.cpp')
		{
			strTarget = strProjectName;	
			strTarget += "App.cpp";
		}
		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;

				wizard.RenderTemplate(strTemplate, strFile, false);
				proj.Object.AddFile(strFile);				
			}
		}
		strTextStream.Close();
		
		// Add AEEAppGen.c and AEEModGen.c relative to the 
		// 'src' folder of BREWDIR environment variable (path)
		proj.Object.AddFile("$(BREWDIR)\\src\\AEEAppGen.c");
		proj.Object.AddFile("$(BREWDIR)\\src\\AEEModGen.c");
	}
	catch(e)
	{
		throw e;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -