上网查了下window下cocos2d-x的工程配置方法,一种是直接cocos2d-x工程下建子工程,另一种是每次新建完工程后自己配置一下,貌似都不太方便。所以还是自己动手改下工程模板的js配置,以后建工程都方便点。
1.我的cocos2d-x放在.C:\DevTools\cocos2d-x (已经生成好debug及release,别忘了生成下)
新建一个环境变量
2.打开Cocos2d-x目录下面的default .js文件 (路径:C:\DevTools\cocos2d-x\template\msvc\CCAppWiz.win32\Scripts\1033)
修改以上几处代码,重新执行下install-templates-msvc。(转载请注明出处!)
附上修改的代码,自己diy修改下目录。试一下新建工程,看下能否debug和release吧!
function LogInfo(strInfo) {
var FileSys = new ActiveXObject("Scripting.FileSystemObject");
var strLogPath = "\\CCApplicationWizardLog.txt"
var file = FileSys.OpenTextFile(strLogPath, 8, true);
file.WriteLine(strInfo);
file.Close();
}
function OnFinish(selProj, selObj) {
try {
// Create symbols based on the project name
var strProjectPath = wizard.FindSymbol('PROJECT_PATH');
var strProjectName = wizard.FindSymbol('PROJECT_NAME');
// var WizardVersion = wizard.FindSymbol('WIZARD_VERSION');
// if(WizardVersion >= 8.0)
// {
// }
// Create symbols based on the project name
var strSafeProjectName = CreateSafeName(strProjectName);
wizard.AddSymbol("SAFE_PROJECT_NAME", strSafeProjectName);
wizard.AddSymbol("NICE_SAFE_PROJECT_NAME", strSafeProjectName.substr(0, 1).toUpperCase() + strSafeProjectName.substr(1))
wizard.AddSymbol("UPPERCASE_SAFE_PROJECT_NAME", strSafeProjectName.toUpperCase());
// Set current year symbol
var d = new Date();
var nYear = 0;
nYear = d.getFullYear();
wizard.AddSymbol("CC_CURRENT_YEAR", nYear);
wizard.AddSymbol("CC_CURRENT_DATE", d.toString());
// Create project and configurations
selProj = CreateCustomProject(strProjectName, strProjectPath);
AddConfigurations(selProj, strProjectName);
AddFilters(selProj);
var InfFile = CreateCustomInfFile();
AddFilesToCustomProj(selProj, strProjectName, strProjectPath, InfFile);
AddPchSettings(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 = '';
var WizardVersion = wizard.FindSymbol('WIZARD_VERSION');
if(WizardVersion >= 10.0)
strProjTemplate = strProjTemplatePath + '\\default.vcxproj';
else
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);
}
}
// Create vcproj.user file
var FileSys = new ActiveXObject("Scripting.FileSystemObject");
var strUserTarget = "";
if(WizardVersion >= 10.0)
strUserTarget = strProjectName + ".win32.vcxproj.user";
else
strUserTarget = strProjectName + ".win32.vcproj.user";
var strUserPath = FileSys.BuildPath(strProjectPath+"\\proj.win32", strUserTarget);
var astrParentPath = new Array();
astrParentPath[0] = strProjectPath;
while (astrParentPath.length) {
var strPath = astrParentPath.pop();
var strParentPath = FileSys.GetParentFolderName(strPath);
if (!FileSys.FolderExists(strParentPath)) {
astrParentPath.push(strPath);
astrParentPath.push(strParentPath);
continue;
}
else {
if (!FileSys.FolderExists(strPath)) {
FileSys.CreateFolder(strPath);
}
var strWin32ProjectPath = strPath + "\\proj.win32";
if (!FileSys.FolderExists(strWin32ProjectPath)) {
FileSys.CreateFolder(strWin32ProjectPath);
}
}
}
var file = FileSys.OpenTextFile(strUserPath, 2, true);
var strUserValue = "";
if(WizardVersion >= 10.0)
strUserValue = "\r\n"
+ "\r\n"
+ " \r\n"
+ " false \r\n"
+ " $(ProjectDir)..\\Resources \r\n"
+ " $(ProjectDir)..\\Resources \r\n"
+ " WindowsLocalDebugger \r\n"
+ " WindowsLocalDebugger \r\n"
+ " \r\n"
+ " \r\n"
+ " PATH=$(Cocos2dx)\\Debug.win32%3b$(PATH) \r\n"
+ " \r\n"
+ " \r\n"
+ " PATH=$(Cocos2dx)\\Release.win32%3b$(PATH) \r\n"
+ " \r\n"
+ " ";
else
strUserValue = "\r\n"
+ "\r\n"
+ " \r\n"
+ " \r\n"
+ " \r\n"
+ " \r\n"
+ " \r\n"
+ " \r\n"
+ " \r\n"
+ " \r\n"
+ " ";
file.WriteLine(strUserValue);
file.Close();
// Create project file
var strProjectNameWithExt = '';
if(WizardVersion >= 10.0)
strProjectNameWithExt = strProjectName + '.win32.vcxproj';
else
strProjectNameWithExt = strProjectName + '.win32.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+"\\proj.win32\\", 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');
group.Filter = strSrcFilter;
strSrcFilter = wizard.FindSymbol('INCLUDE_FILTER');
group = proj.Object.AddFilter('include');
group.Filter = strSrcFilter;
strSrcFilter = wizard.FindSymbol('RESOURCE_FILTER');
group = proj.Object.AddFilter('resource');
group.Filter = strSrcFilter;
}
catch (e) {
throw e;
}
}
// Configurations data
var nNumConfigs = 2;
var astrConfigName = new Array();
astrConfigName[0] = "Debug";
astrConfigName[1] = "Release";
function AddConfigurations(proj, strProjectName) {
try {
var nCntr;
for (nCntr = 0; nCntr < nNumConfigs; nCntr++) {
// Check if it's Debug configuration
var bDebug = false;
if (astrConfigName[nCntr].search("Debug") != -1)
bDebug = true;
// General settings
var config = proj.Object.Configurations(astrConfigName[nCntr]);
// if(wizard.FindSymbol("CC_USE_UNICODE"))
config.CharacterSet = charSetUnicode;
// else
// config.CharacterSet = charSetMBCS;
var WizardVersion = wizard.FindSymbol('WIZARD_VERSION');
if(WizardVersion >= 10.0) {
config.OutputDirectory = '$(SolutionDir)$(Configuration).win32\\'
config.IntermediateDirectory = '$(Configuration).win32\\';
} else {
config.OutputDirectory = '$(SolutionDir)$(ConfigurationName).win32'
config.IntermediateDirectory = '$(ConfigurationName).win32';
}
// Compiler settings
var CLTool = config.Tools('VCCLCompilerTool');
// Additional Inlcude Directories
var strAddIncludeDir = '.;..\\Classes';
strAddIncludeDir += ';$(Cocos2dx)cocos2dx';
strAddIncludeDir += ';$(Cocos2dx)cocos2dx\\include';
strAddIncludeDir += ';$(Cocos2dx)cocos2dx\\kazmath\\include';
strAddIncludeDir += ';$(Cocos2dx)cocos2dx\\platform\\win32';
strAddIncludeDir += ';$(Cocos2dx)cocos2dx\\platform\\third_party\\win32';
strAddIncludeDir += ';$(Cocos2dx)cocos2dx\\platform\\third_party\\win32\\OGLES';
if (wizard.FindSymbol('CC_USE_BOX2D')) {
strAddIncludeDir += ';$(Cocos2dx)external';
}
if (wizard.FindSymbol('CC_USE_CHIPMUNK')) {
strAddIncludeDir += ';$(Cocos2dx)external\\chipmunk\\include\\chipmunk';
}
if (wizard.FindSymbol('CC_USE_COCOS_DENSHION_SIMPLE_AUDIO_ENGINE')) {
strAddIncludeDir += ';$(Cocos2dx)CocosDenshion\\include';
}
if (wizard.FindSymbol('CC_USE_LUA')) {
strAddIncludeDir += ';$(Cocos2dx)scripting\\lua\\cocos2dx_support';
strAddIncludeDir += ';$(Cocos2dx)scripting\\lua\\tolua';
strAddIncludeDir += ';$(Cocos2dx)scripting\\lua\\lua';
}
CLTool.AdditionalIncludeDirectories = strAddIncludeDir;
CLTool.UsePrecompiledHeader = pchNone; // pchUseUsingSpecific;
CLTool.WarningLevel = warningLevel_3;
if (bDebug) {
CLTool.RuntimeLibrary = rtMultiThreadedDebugDLL;
CLTool.MinimalRebuild = true;
CLTool.DebugInformationFormat = debugEditAndContinue;
CLTool.BasicRuntimeChecks = runtimeBasicCheckAll;
CLTool.Optimization = optimizeDisabled;
}
else {
CLTool.RuntimeLibrary = rtMultiThreadedDLL;
CLTool.ExceptionHandling = false;
CLTool.DebugInformationFormat = debugDisabled;
}
var strDefines = GetPlatformDefine(config);
strDefines += "_WINDOWS;STRICT;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS";
if (bDebug)
strDefines += "_DEBUG;COCOS2D_DEBUG=1;";
else
strDefines += "NDEBUG";
CLTool.PreprocessorDefinitions = strDefines;
// Disable special warning
CLTool.DisableSpecificWarnings = "4267;4251;4244";
// Linker settings
var LinkTool = config.Tools('VCLinkerTool');
LinkTool.SubSystem = subSystemWindows;
LinkTool.TargetMachine = machineX86;
if (bDebug) {
LinkTool.LinkIncremental = linkIncrementalYes;
LinkTool.GenerateDebugInformation = true;
}
else {
LinkTool.LinkIncremental = linkIncrementalNo;
}
// Additional Library Directories
var strAddDepends = 'libcocos2d.lib libExtensions.lib opengl32.lib glew32.lib';
if (wizard.FindSymbol('CC_USE_BOX2D')) {
strAddDepends += ' libBox2d.lib';
}
if (wizard.FindSymbol('CC_USE_CHIPMUNK')) {
strAddDepends += ' libchipmunk.lib';
}
if (wizard.FindSymbol('CC_USE_COCOS_DENSHION_SIMPLE_AUDIO_ENGINE')) {
strAddDepends += ' libCocosDenshion.lib';
}
if (wizard.FindSymbol('CC_USE_LUA')) {
strAddDepends += ' liblua.lib';
}
if (bDebug) {
LinkTool.AdditionalLibraryDirectories = '$(Cocos2dx)Debug.win32\\';
}
else {
LinkTool.AdditionalLibraryDirectories = '$(Cocos2dx)Release.win32\\';
}
LinkTool.AdditionalDependencies = strAddDepends;
// Resource settings
var RCTool = config.Tools("VCResourceCompilerTool");
RCTool.Culture = rcEnglishUS;
RCTool.AdditionalIncludeDirectories = "$(IntDir)";
if (bDebug)
RCTool.PreprocessorDefinitions = "_DEBUG";
else
RCTool.PreprocessorDefinitions = "NDEBUG";
// MIDL settings
var MidlTool = config.Tools("VCMidlTool");
MidlTool.MkTypLibCompatible = false;
if (IsPlatformWin32(config))
MidlTool.TargetEnvironment = midlTargetWin32;
if (bDebug)
MidlTool.PreprocessorDefinitions = "_DEBUG";
else
MidlTool.PreprocessorDefinitions = "NDEBUG";
MidlTool.HeaderFileName = strProjectName + ".h";
MidlTool.InterfaceIdentifierFileName = strProjectName + "_i.c";
MidlTool.ProxyFileName = strProjectName + "_p.c";
MidlTool.GenerateStublessProxies = true;
MidlTool.TypeLibraryName = "$(IntDir)/" + strProjectName + ".tlb";
MidlTool.DLLDataFileName = "";
// Post-build settings
// var PostBuildTool = config.Tools("VCPostBuildEventTool");
// PostBuildTool.Description = "Performing copy resource from Resource to OutDir...";
// PostBuildTool.CommandLine = "xcopy /E /Q /Y \"$(ProjectDir)Resource\\*.*\" \"$(OutDir)\"";
}
}
catch (e) {
throw e;
}
}
function AddPchSettings(proj) {
try {
// var files = proj.Object.Files;
// var fStdafx = files("StdAfx.cpp");
//
// var nCntr;
// for(nCntr = 0; nCntr < nNumConfigs; nCntr++)
// {
// var config = fStdafx.FileConfigurations(astrConfigName[nCntr]);
// config.Tool.UsePrecompiledHeader = pchCreateUsingSpecific;
// }
}
catch (e) {
throw e;
}
}
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 strWizTempFile = tfolder.Path + "\\" + 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 {
var strTarget = strName;
var nIndex = strName.indexOf("root");
if (nIndex >= 0) {
strTarget = strName.substring(0, nIndex) + strProjectName + strName.substring(nIndex + 4, strName.length);
}
var strTemp = "../../../../../scripting/lua";
nIndex = strTarget.indexOf(strTemp);
if (nIndex >= 0) {
strTarget = "Classes" + strTarget.substring(nIndex + strTemp.length, strTarget.length);
}
return strTarget;
}
catch (e) {
throw e;
}
}
function AddFilesToCustomProj(proj, strProjectName, strProjectPath, InfFile) {
try {
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 = true; //"true" will only copy the file from strTemplate to strTarget without rendering/adding to the project
var strExt = strName.substr(strName.lastIndexOf("."));
if (strExt == ".h" || strExt == ".cpp" || strExt == ".c" || strExt == ".rc")
bCopyOnly = false;
wizard.RenderTemplate(strTemplate, strFile, bCopyOnly);
// don't add these files to the project
if (strTarget == strProjectName + ".h" ||
strTarget == strProjectName + "ps.mk" ||
strTarget == strProjectName + "ps.def")
continue;
proj.Object.AddFile(strFile);
}
}
strTextStream.Close();
}
catch (e) {
throw e;
}
}