web-dev-qa-db-ja.com

CMakeでWin32ビルドの実行可能出力ディレクトリを変更するにはどうすればよいですか?

私の問題はそれ自体です:私はVisual Studio2010を使用して小さなパーサーを開発しています。私はビルド構成ツールとしてCMakeを使用しています。

しかし、デフォルトの実行可能ビルドの動作は不便だと思います。私が欲しいのは、私の最終的なプログラムを次の場所に配置することです。

E:/parsec/bin/<exe-name>.<build-type>.exe

のではなく

E:/parsec/bin/<build-type>/<exe-name>.exe

CMakeを使ってどうしますか?

13
Takhiarel

いくつかのオプションがあります。

  1. ビルド後に実行可能ファイルをコピーします
  2. 実行可能ファイルの出力ディレクトリをカスタマイズする

ビルド後に実行可能ファイルをコピーします

ビルドが成功した後、実行可能ファイルをコピーできます(初心者の回答を参照)が、インストールターゲットを使用する方が良いかもしれません。

install コマンドを使用して、 CMAKE_INSTALL_PREFIX ディレクトリにコピーされるターゲット(実行可能ファイル、ライブラリ、ヘッダーなど)を指定します。 cmakeのコマンドライン(またはcmake GUI)でCMAKE_INSTALL_PREFIXを指定できます。

実行可能ファイルの出力ディレクトリをカスタマイズする

警告:絶対パスをcmakelists.txtに直接設定することはお勧めしません。

set_target_properties を使用して RUNTIME_OUTPUT_DIRECTORY をカスタマイズします

set_target_properties( yourexe PROPERTIES RUNTIME_OUTPUT_DIRECTORY E:/parsec/bin/ )

別の方法として、 CMAKE_RUNTIME_OUTPUT_DIRECTORY を変更すると、cmakeプロジェクトのallターゲットにこれを指定できます。 dllをビルドするときは、 CMAKE_LIBRARY_OUTPUT_DIRECTORY も変更するように注意してください。

set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )

追加情報:これらの質問を見てください:

22
André

ほとんどの場合、次のような別のカスタムコマンドを使用してバイナリをコピーする必要があります。

add_custom_command(target your_target_name
          POST_BUILD
          COMMAND ${CMAKE_COMMAND} -E copy ${EXAMPLE_BIN_NAME} ${PROJECT_BINARY_DIR}/.
)
3
Beginner