kkAyatakaのメモ帳。

誰かの役に立つかもしれない備忘録。

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;
    }
}


これにて完了。