-
-
一个自定义向导
-
发表于: 2013-11-9 22:59 4061
-
初学,想自己弄个模板,就在网上搜了些资料修改了一下,初学的时候尝试一下也不错的。
1新建自定义向导,去掉用户界面选项。
2、添加模板文件driverMain.c。
3、修改Templates.inf文件。
4、修改driverWizard.vsz文件。
5、修改default.js文件。
1)修改function AddFilters(proj)
2)修改function AddConfig(proj, strProjectName)
///////////////////////////////////////////Debug//////////////////////////////////////////
var config = proj.Object.Configurations('Debug');
//vs2010输出目录
config.IntermediateDirectory = '$(Configuration)\\';
config.OutputDirectory = '$(SolutionDir)$(Configuration)\\';
//VS2008输出目录
//config.IntermediateDirectory = '$(ConfigurationName)\\';
//config.OutputDirectory = '$(SolutionDir)$(ConfigurationName)\\';
config.CharacterSet = charSet.charSetUnicode; //设置字符集
//config.useOfMfc = useOfMfc.useMfcDynamic; //设置共享库
var CLTool = config.Tools('VCCLCompilerTool');
// TODO: 添加编译器设置
CLTool.CompileAs = CompileAsOptions.compileAsC; //编译为C代码
//debugOldStyleInfo(C7兼容)、debugEnabled(程序数据库)、debugEditAndContinue(编辑并继续)
CLTool.DebugInformationFormat = debugOldStyleInfo;
CLTool.WarningLevel = warningLevelOption.warningLevel_2; //警告等级
CLTool.WarnAsError = true; //警告视为错误
CLTool.Optimization = optimizeOption.optimizeDisabled; //Disabled (/Od)
CLTool.PreprocessorDefinitions = "WIN32=100;_X86_=1;WINVER=0x501;DBG=1"; //预处理器定义
CLTool.MinimalRebuild = false; //不启用最小重新生成
CLTool.BasicRuntimeChecks = basicRuntimeCheckOption.runtimeBasicCheckNone; //基本运行时检查(Default)
CLTool.RuntimeLibrary = runtimeLibraryOption.rtMultiThreadedDebug; //运行库(Multi-threaded Debug (/MTd))
CLTool.BufferSecurityCheck = false; //缓冲区安全检查 否
CLTool.CallingConvention = callingConventionOption.callConventionStdCall; //调用约定
CLTool.AdditionalIncludeDirectories = "D:\\WinDDK\\7600.16385.1\\inc\\ddk;D:\\WinDDK\\7600.16385.1\\inc\\crt;D:\\WinDDK\\7600.16385.1\\inc\\api;";
//CLTool.SuppressStartupBanner = true; //启动版权标识
//CLTool.UsePrecompiledHeader = pchOption.pchCreateUsingSpecific; //使用预编译头
//CLTool.PrecompiledHeaderThrough = "StdAfx.h"; //通过文件创建/使用PCH
//CLTool.PrecompiledHeaderFile = '$(IntDir)\$(TargetName).pch'; //预编译头文件
var LinkTool = config.Tools('VCLinkerTool');
// TODO: 添加链接器设置
//VS2010输出
LinkTool.OutputFile = "$(OutDir)$(TargetName).sys"; //输出文件
//VS2008输出
//LinkTool.OutputFile = "$(OutDir)\$(ProjectName).sys"; //输出文件
LinkTool.LinkIncremental = linkIncrementalType.linkIncrementalNo; //不启用增量链接
LinkTool.IgnoreImportLibrary = true; //忽略导入库
LinkTool.AdditionalDependencies = "ntoskrnl.lib Hal.lib wdm.lib wdmsec.lib wmilib.lib ndis.lib"; //添加依赖项
LinkTool.IgnoreAllDefaultLibraries = true; //忽略所有默认库
LinkTool.EnableUAC = false; //不启用用户账户控制
LinkTool.GenerateDebugInformation = true; //生成调试信息
LinkTool.GenerateMapFile = true; //生成映像文件
LinkTool.MapFileName = "$(TargetDir)$(TargetName).map"; //映像文件名
LinkTool.SubSystem = subSystemOption.subSystemConsole; //子系统控制台
LinkTool.HeapReserveSize = 4194304; //堆栈保留大小0x400000
LinkTool.HeapCommitSize = 4096; //堆栈提交大小4096
LinkTool.driver = driverOption.driver; //驱动程序
LinkTool.EntryPointSymbol = "DriverEntry"; //入口点
LinkTool.RandomizedBaseAddress = enumRandomizedBaseAddressBOOL.RandomizedBaseAddressDefault; //随机基址默认值
LinkTool.DataExecutionPrevention = enumDataExecutionPreventionBOOL.DataExecutionPreventionDefault; //数据执行保护 默认值
LinkTool.SetChecksum = true; //设置校验和
LinkTool.AdditionalOptions = "/SECTION:INIT,D /IGNORE:4078"; //命令行选项
//LinkTool.ProgramDatabaseFile = "$(outdir)/" + strProjectName + ".pdb";
LinkTool.ProgramDatabaseFile = "$(TargetDir)$(TargetName).pdb"; //符号文件
//LinkTool.SuppressStartupBanner = true; // nologo
LinkTool.AdditionalLibraryDirectories = "D:\\WinDDK\\7600.16385.1\\lib\\wxp\\i386;D:\\WinDDK\\7600.16385.1\\lib\\Crt\\i386";
////////////////////////////////////////////////Release//////////////////////////////////////////
config = proj.Object.Configurations('Release');
config.IntermediateDirectory = '$(ConfigurationName)';
config.OutputDirectory = '$(SolutionDir)$(ConfigurationName)';
config.CharacterSet = charSet.charSetUnicode;
config.useOfMfc = useOfMfc.useMfcDynamic;
var CLTool = config.Tools('VCCLCompilerTool');
// TODO: 添加编译器设置
CLTool.UsePrecompiledHeader = pchOption.pchCreateUsingSpecific;
CLTool.PrecompiledHeaderThrough = "StdAfx.h";
CLTool.PrecompiledHeaderFile = '$(IntDir)\$(TargetName).pch';
CLTool.WarningLevel = warningLevelOption.warningLevel_3;
CLTool.Optimization = optimizeOption.optimizeMaxSpeed;
CLTool.EnableIntrinsicFunctions = true;
CLTool.PreprocessorDefinitions = "WIN32;_WINDOWS;NDEBUG";
CLTool.RuntimeLibrary = runtimeLibraryOption.rtMultiThreadedDll;
var LinkTool = config.Tools('VCLinkerTool');
// TODO: 添加链接器设置
LinkTool.AdditionalDependencies = "opengl32.lib glu32.lib";
LinkTool.LinkIncremental = linkIncrementalType.linkIncrementalNo;
LinkTool.SubSystem = subSystemOption.Windows;
注意:目录信息等根据实际情况填写。
Release部分没有修改。
把以上部分对应填写后可以正常使用,VS2008和VS2010都可以编译通过,编译的sys能不能用就不知道了。
参考
http://support.microsoft.com/kb/810455/zh-cn
http://msdn.microsoft.com/en-us/library/Microsoft.VisualStudio.VCProjectEngine.VCCLCompilerTool.aspx
http://msdn.microsoft.com/en-us/library/Microsoft.VisualStudio.VCProjectEngine.VCLinkerTool.aspx
http://www.codeproject.com/Articles/32575/OpenGL-MFC-AppWizard?fid=1533755&df=10000&mpp=10&noise=1&prof=True&sort=Position&view=None&spc=Relaxed&select=2893345&fr=1
1新建自定义向导,去掉用户界面选项。
2、添加模板文件driverMain.c。
3、修改Templates.inf文件。
4、修改driverWizard.vsz文件。
5、修改default.js文件。
1)修改function AddFilters(proj)
2)修改function AddConfig(proj, strProjectName)
///////////////////////////////////////////Debug//////////////////////////////////////////
var config = proj.Object.Configurations('Debug');
//vs2010输出目录
config.IntermediateDirectory = '$(Configuration)\\';
config.OutputDirectory = '$(SolutionDir)$(Configuration)\\';
//VS2008输出目录
//config.IntermediateDirectory = '$(ConfigurationName)\\';
//config.OutputDirectory = '$(SolutionDir)$(ConfigurationName)\\';
config.CharacterSet = charSet.charSetUnicode; //设置字符集
//config.useOfMfc = useOfMfc.useMfcDynamic; //设置共享库
var CLTool = config.Tools('VCCLCompilerTool');
// TODO: 添加编译器设置
CLTool.CompileAs = CompileAsOptions.compileAsC; //编译为C代码
//debugOldStyleInfo(C7兼容)、debugEnabled(程序数据库)、debugEditAndContinue(编辑并继续)
CLTool.DebugInformationFormat = debugOldStyleInfo;
CLTool.WarningLevel = warningLevelOption.warningLevel_2; //警告等级
CLTool.WarnAsError = true; //警告视为错误
CLTool.Optimization = optimizeOption.optimizeDisabled; //Disabled (/Od)
CLTool.PreprocessorDefinitions = "WIN32=100;_X86_=1;WINVER=0x501;DBG=1"; //预处理器定义
CLTool.MinimalRebuild = false; //不启用最小重新生成
CLTool.BasicRuntimeChecks = basicRuntimeCheckOption.runtimeBasicCheckNone; //基本运行时检查(Default)
CLTool.RuntimeLibrary = runtimeLibraryOption.rtMultiThreadedDebug; //运行库(Multi-threaded Debug (/MTd))
CLTool.BufferSecurityCheck = false; //缓冲区安全检查 否
CLTool.CallingConvention = callingConventionOption.callConventionStdCall; //调用约定
CLTool.AdditionalIncludeDirectories = "D:\\WinDDK\\7600.16385.1\\inc\\ddk;D:\\WinDDK\\7600.16385.1\\inc\\crt;D:\\WinDDK\\7600.16385.1\\inc\\api;";
//CLTool.SuppressStartupBanner = true; //启动版权标识
//CLTool.UsePrecompiledHeader = pchOption.pchCreateUsingSpecific; //使用预编译头
//CLTool.PrecompiledHeaderThrough = "StdAfx.h"; //通过文件创建/使用PCH
//CLTool.PrecompiledHeaderFile = '$(IntDir)\$(TargetName).pch'; //预编译头文件
var LinkTool = config.Tools('VCLinkerTool');
// TODO: 添加链接器设置
//VS2010输出
LinkTool.OutputFile = "$(OutDir)$(TargetName).sys"; //输出文件
//VS2008输出
//LinkTool.OutputFile = "$(OutDir)\$(ProjectName).sys"; //输出文件
LinkTool.LinkIncremental = linkIncrementalType.linkIncrementalNo; //不启用增量链接
LinkTool.IgnoreImportLibrary = true; //忽略导入库
LinkTool.AdditionalDependencies = "ntoskrnl.lib Hal.lib wdm.lib wdmsec.lib wmilib.lib ndis.lib"; //添加依赖项
LinkTool.IgnoreAllDefaultLibraries = true; //忽略所有默认库
LinkTool.EnableUAC = false; //不启用用户账户控制
LinkTool.GenerateDebugInformation = true; //生成调试信息
LinkTool.GenerateMapFile = true; //生成映像文件
LinkTool.MapFileName = "$(TargetDir)$(TargetName).map"; //映像文件名
LinkTool.SubSystem = subSystemOption.subSystemConsole; //子系统控制台
LinkTool.HeapReserveSize = 4194304; //堆栈保留大小0x400000
LinkTool.HeapCommitSize = 4096; //堆栈提交大小4096
LinkTool.driver = driverOption.driver; //驱动程序
LinkTool.EntryPointSymbol = "DriverEntry"; //入口点
LinkTool.RandomizedBaseAddress = enumRandomizedBaseAddressBOOL.RandomizedBaseAddressDefault; //随机基址默认值
LinkTool.DataExecutionPrevention = enumDataExecutionPreventionBOOL.DataExecutionPreventionDefault; //数据执行保护 默认值
LinkTool.SetChecksum = true; //设置校验和
LinkTool.AdditionalOptions = "/SECTION:INIT,D /IGNORE:4078"; //命令行选项
//LinkTool.ProgramDatabaseFile = "$(outdir)/" + strProjectName + ".pdb";
LinkTool.ProgramDatabaseFile = "$(TargetDir)$(TargetName).pdb"; //符号文件
//LinkTool.SuppressStartupBanner = true; // nologo
LinkTool.AdditionalLibraryDirectories = "D:\\WinDDK\\7600.16385.1\\lib\\wxp\\i386;D:\\WinDDK\\7600.16385.1\\lib\\Crt\\i386";
////////////////////////////////////////////////Release//////////////////////////////////////////
config = proj.Object.Configurations('Release');
config.IntermediateDirectory = '$(ConfigurationName)';
config.OutputDirectory = '$(SolutionDir)$(ConfigurationName)';
config.CharacterSet = charSet.charSetUnicode;
config.useOfMfc = useOfMfc.useMfcDynamic;
var CLTool = config.Tools('VCCLCompilerTool');
// TODO: 添加编译器设置
CLTool.UsePrecompiledHeader = pchOption.pchCreateUsingSpecific;
CLTool.PrecompiledHeaderThrough = "StdAfx.h";
CLTool.PrecompiledHeaderFile = '$(IntDir)\$(TargetName).pch';
CLTool.WarningLevel = warningLevelOption.warningLevel_3;
CLTool.Optimization = optimizeOption.optimizeMaxSpeed;
CLTool.EnableIntrinsicFunctions = true;
CLTool.PreprocessorDefinitions = "WIN32;_WINDOWS;NDEBUG";
CLTool.RuntimeLibrary = runtimeLibraryOption.rtMultiThreadedDll;
var LinkTool = config.Tools('VCLinkerTool');
// TODO: 添加链接器设置
LinkTool.AdditionalDependencies = "opengl32.lib glu32.lib";
LinkTool.LinkIncremental = linkIncrementalType.linkIncrementalNo;
LinkTool.SubSystem = subSystemOption.Windows;
注意:目录信息等根据实际情况填写。
Release部分没有修改。
把以上部分对应填写后可以正常使用,VS2008和VS2010都可以编译通过,编译的sys能不能用就不知道了。
参考
http://support.microsoft.com/kb/810455/zh-cn
http://msdn.microsoft.com/en-us/library/Microsoft.VisualStudio.VCProjectEngine.VCCLCompilerTool.aspx
http://msdn.microsoft.com/en-us/library/Microsoft.VisualStudio.VCProjectEngine.VCLinkerTool.aspx
http://www.codeproject.com/Articles/32575/OpenGL-MFC-AppWizard?fid=1533755&df=10000&mpp=10&noise=1&prof=True&sort=Position&view=None&spc=Relaxed&select=2893345&fr=1
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
谁下载
谁下载
谁下载
看原图
赞赏
雪币:
留言: