VC2010のカスタムウィザードを作る その5
前回までで最低限動作する設定はできたが、プロジェクトの設定はほとんどされていない。
そこで、Win32コンソールプロジェクトの設定を参考に、基本的な設定を行うことにする。
追加で設定するのは以下のとおり。
- 中間、出力ディレクトリ(趣味)
- Warningレベル
- プリプロセッサの定義
- インクリメンタルリンク
- 最適化
default.jsのAddConfigは以下のとおり。
function AddConfig(proj, strProjectName) { try { // Debug var config = proj.Object.Configurations('Debug'); config.OutputDirectory = "$(SolutionDir)_$(Configuration)\\"; config.IntermediateDirectory = "_$(Configuration)\\"; { // コンパイラ var CLTool = config.Tools('VCCLCompilerTool'); CLTool.AdditionalIncludeDirectories += 'libs'; CLTool.WarningLevel = warningLevelOption.warningLevel_3; CLTool.PreprocessorDefinitions += "WIN32;_DEBUG;_CONSOLE;"; // リンカ var LinkTool = config.Tools('VCLinkerTool'); LinkTool.AdditionalDependencies += "libs\\cppunit\\cppunitd_dll.lib"; LinkTool.GenerateDebugInformation = true; LinkTool.LinkIncremental = linkIncrementalType.linkIncrementalYes; // ビルド後イベント var postBuild = config.Tools('VCPostBuildEventTool'); postBuild.CommandLine = 'copy "$(ProjectDir)libs\\cppunit\\cppunitd_dll.dll" "$(TargetDir)"'; } var config = proj.Object.Configurations('Release'); config.OutputDirectory = "$(SolutionDir)_$(Configuration)\\"; config.IntermediateDirectory = "_$(Configuration)\\"; config.WholeProgramOptimization = WholeProgramOptimizationLinkTimeCodeGen; { // コンパイラ var CLTool = config.Tools('VCCLCompilerTool'); CLTool.AdditionalIncludeDirectories += 'libs'; CLTool.WarningLevel = warningLevelOption.warningLevel_3; CLTool.EnableIntrinsicFunctions = true; CLTool.WholeProgramOptimization = true; CLTool.PreprocessorDefinitions += "WIN32;NDEBUG;_CONSOLE;"; // リンカ var LinkTool = config.Tools('VCLinkerTool'); LinkTool.AdditionalDependencies += "libs\\cppunit\\cppunit_dll.lib"; LinkTool.GenerateDebugInformation = true; LinkTool.LinkIncremental = linkIncrementalType.linkIncrementalNo; LinkTool.OptimizeReferences = optRefType.optReferences; LinkTool.EnableCOMDATFolding = optFoldingType.optFolding; // ビルド後イベント var postBuild = config.Tools('VCPostBuildEventTool'); postBuild.CommandLine = 'copy "$(ProjectDir)libs\\cppunit\\cppunit_dll.dll" "$(TargetDir)"'; } } catch(e) { throw e; } }
これにて完了。