2012-04-10 3 views
10

ビルドタイプ(デバッグ/リリース)ごとに別々のフォルダを作成し、それぞれにcmakeを実行し、デバッグ/デバッグ/リリースの両方の設定を同時にサポートするcmakeを使用して、またmake(make)を実行して中間製品と最終製品(dll、exeなど)用に別々のフォルダを作成する単一のmakefileを作成することは可能ですか?Cmakeはデバッグとリリースの両方をサポートする単一のメイクファイルを生成することができます

答えて

8

私が知る限り、これは1組のビルドスクリプトを使用して達成することはできません。次に行う

build/ 
build/debug 
build/release 

$ cd build 
$ 
$ cd build/debug 
$ cmake -DCMAKE_BUILD_TYPE=Debug ../.. 
$ make 
$ 
$ cd ../release 
$ cmake -DCMAKE_BUILD_TYPE=Release ../.. 
$ make 

必要に応じて、次のようなbuildディレクトリ内の別のビルドスクリプトを追加することができますしかし、あなたは何ができるかは、あなたの作業領域の二つのサブディレクトリがあります。

#!/bin/sh 
cd debug && make && cd .. 
cd release && make && cd .. 
+0

ビジュアルスタジオslnファイルはどうですか?また、デバッグのみを生成するか、設定のみをリリースするのですか?同じ.slnファイルで両方をサポートしていますか? – user243655

+1

@ user243655: 'Debug'、' Release'、 'MinSizeRel'、' RelWithDebInfo'という複数の設定を生成しているようです。 –

+0

情報に感謝します。 – user243655

1

これはADD_CUSTOM_TARGETコマンドを使用して達成できます。たとえば、あなたは両方のデバッグを追加し、メイクファイル内のターゲットを解放し、あなたのCMakeLists.txtファイルに以下を追加したい場合:

ADD_CUSTOM_TARGET(debug 
    COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${CMAKE_SOURCE_DIR} 
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all 
    COMMENT "Creating the executable in the debug mode.") 

ADD_CUSTOM_TARGET(release 
    COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Release ${CMAKE_SOURCE_DIR} 
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all 
    COMMENT "Creating the executable in the release mode.") 

次に、cmakeので構成した後、あなたはデバッグターゲットを作るためにmake debugを実行することができますmake releaseを実行して、同じディレクトリにリリース対象を作成します。