Studioしか使っていません。Studioはユーザ数が多いので無視できるものではないです。(GENERATOR_IS_MULTI_CONFIGによると、Xcodeもマルチ・コンフィグレーションだそうです。)ですので、マルチ・プラットフォーム対応する際には、この両者への対応は事実上必須と思います。それにはCMakeが圧倒的にメジャーです。(他にもシングル・コンフィグレーションとマルチ・コンフィグレーションの両方に対応するビルド・ツールは存在する可能性はありますが、私はこれしか知らないです。デフォルトで4つのビルド・モードをサポートしています。MinSizeRelです。デバッグ情報付きのリリース・ビルド、MinSizeRelはサイズ優先のリリース・ビルドです。マルチプラットフォームなスタック・トレースのようにリリース・ビルドでもデバッグシンボルを一時的に付けたいような時に有用だろうと思います。始まりましたので、サポートしている処理系は多いです。CMakeはNMakeにも対応しています知らなかったのですが、対応しているようです。シングル・コンフィグレーションです。GeneratorNinjaシングル・コンフィグレーションの場合、CMakeコマンドでビルド・システムを生成する際にCMAKE_BUILD_TYPEシンボルを定義してビルド・モードを指定します。処理系によって振る舞いが異なりました。gcc(linux)とMinGW(windows)はDebugビルドでもReleaseビルドでもありませんでした。NMakeは-DCMAKE_BUILD_TYPE=Debugと同じ結果となりました。構成マネージャー(O)」で開く下記ダイアログの「アクティブソリューション構成(C)」で設定します。CMakeで生成したソリューション(*.sln)の場合、Debug、Release、RelWithDebInfo、MinSizeRelを選択できます。それぞれの意味はシングル・コンフィグレーションの場合と同じです。シングル・コンフィグレーションでは、ビルド・システム(≒Makefile)生成時に指定しましたが、マルチ・コンフィグレーションではビルド・システム(≒*.sln)生成時ではなく、ビルド時に指定します。1つのビルド・システムで複数のビルド・モード(構成)をサポートするので、マルチ・コンフィグレーション(複数の構成)と呼ばれています。4.CMakeLists.txtの指定方法の相違CMakeLists.txtでは、それぞれのビルド・モードに対してコンパイル・オプションやその他非常に数多くの様々な条件を設定することができます。シングル・コンフィグレーションとマルチ・コンフィグレーションの両方に通用するように設定するにはコツが必要です。ここでは、コンパイル・オプションをビルド・モードによって切り替えることは比較的多いと思いますので、コンパイル・オプションを例にとって解説します。話を単純にするため、-Dや/Dオプションでプリプロセッサ・シンボル(マクロ)を指定します。BUILD_TYPEシンボルをCMakeLists.txtで設定し、それを-Dオプションで渡して表示するプログラムを作成します。単純に文字列が定義されたBUILD_TYPEシンボルの内容を出力しています。(もし、BUILD_TYPEが定義されていなければ"<None>"を表示します。(そしてハマりました。)CMAKE_BUILD_TYPE変数の値をチェックしてコンパイル・オプションを切り替え、BUILD_TYPEシンボルへの設定を切り替えてます。hello.cpp)cmake_minimum_requiredについてこれは使用するCMakeの最低バージョンを指定します。これより古いCMakeで生成しようとするとエラーがでます。進めると宣言しています。ここでは3.5.1を指定しているだけです。上記のCMakeLists.txtはもっと古いCMakeでも問題ないと思います。問題のないCMakeバージョンを探し回るのは大変ですので、私は使用するCMakeのバージョンを決めたら、そのバージョンを指定するようにしています。...)についてこれは文字列に含まれる指定した文字列を置換するコマンドです。2つの”/W3′′と”/W4′′を指定するとVC++が警告を表示するので、このstringコマンドで”/W3′′を””へ置換することで消しています。ついて\を3つ連ねているのはTypoではありません。