2016-08-25 4 views
-2

Visual StudioでCmakeを使用して複数のビルドタイプを設定する方法がわかりません。 は例えば、デバッグは、Visual Studioで選択されたとき、私は${CMAKE_BINARY_DIR}/rundir/debug/bin*d.dllをコピーする必要があり、リリースは、Visual Studioで選択されたとき、私は${CMAKE_BINARY_DIR}/rundir/release/bin*.dllをコピーする必要があります。cmakeを使用してVisual Studioの現在のビルドタイプを判断する方法

誰かに私にそのことを教えてもらえますか?

+0

あなたは_copy_意味ですかビルド後のコマンドを構成することができますか?ジェネレータ式を使用してビルドタイプ依存の場所を指定することはできますか? –

+0

DLLは別のターゲットの製品ですか? –

+0

。解決策が見つかりました。私はこのようにcmakeでのVisual Studioの$(コンフィギュレーション)変数を使用します。add_custom_command(TARGET OBS POST_BUILD \t \t COMMAND $場合(ConfigurationName)==デバッグ( \t \t XCOPY/Y/D「$(QTDIR)\\ビン\ \ Qt5WebKitWidgetsd.dll "" $(SolutionDir)rundir \\ $(構成)\\ bin \\ 64bit "\ n)else(//何か) – Cosi10a1

答えて

1

ポストビルドアクションには、CMakeコマンドと適切な変数があります。

CMakeの付いたファイルの周りにコピーするためのプラットフォームに依存しないコマンドがCMake itself on the command lineを使用している:

${CMAKE_COMMAND} -E copy_if_different "${src}" "${dest}" 

「現在」の設定がgenerator expressionsで抽出することができます。

$<CONFIG> 

とさえ直接真実

について試験しました
$<CONFIG:Debug> 

ouターゲットのバイナリ(すなわち、実行可能ファイルおよび共有ライブラリ/ DLL)は、ターゲット変数RUNTIME_OUTPUT_DIRECTORY(およびRUNTIME_OUTPUT_DIRECTORY_<CONFIG>)で与えられ、グローバル変数CMAKE_RUNTIME_OUTPUT_DIRECTORY(およびCMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG>)であらかじめ設定されています。

最後に、我々は_POST成功-build_の意味で、または実際_install_ステップとして

add_custom_command(TARGET myTarget POST_BUILD 
        COMMAND if $<CONFIG:Debug> ("${CMAKE_COMMAND}" -E copy_if_different "${path_to_dependent_dll}/dependent.dll" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}") 
        COMMAND if $<CONFIG:Release> ("${CMAKE_COMMAND}" -E copy_if_different "${path_to_dependent_dll}/dependent.dll" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}") 
        COMMENT "Copying dependent DLL" 
) 
関連する問題