1. ホーム
  2. c++

[解決済み] CMakeでmakeした後、ディレクトリの内容をビルドディレクトリにコピーするには?

2023-03-16 09:56:57

質問

いくつかの設定ファイル (xml, ini, ...) を config ディレクトリにあります。プロジェクトを作成するたびに、config ディレクトリのすべてのファイルを build ディレクトリ (実行ファイルの横) にコピーするにはどうしたらよいでしょうか。

どのように解決するのですか?

あなたは add_custom_command .

ターゲットの名前は MyTarget であれば、こうすればいい。

add_custom_command(TARGET MyTarget PRE_BUILD
                   COMMAND ${CMAKE_COMMAND} -E copy_directory
                       ${CMAKE_SOURCE_DIR}/config/ $<TARGET_FILE_DIR:MyTarget>)

をビルドする度に実行されます。 MyTarget の内容を、ターゲットとなるexe/libの終着点であるディレクトリにコピーします。

として マーク ラカタ を置き換えることは、以下のコメントで指摘されています。 PRE_BUILDPOST_BUILD の中に add_custom_command は、ビルドが成功した場合にのみコピーが行われることを保証します。

説明

  • ${CMAKE_COMMAND} はCMakeへのパス
  • -E は、CMake がビルドする代わりにコマンドを実行するようにします。
  • copy_directory コマンドラインツール
  • config は、ビルドターゲットに内容がコピーされるディレクトリ(プロジェクトのルートに該当するもの)です。
  • $<TARGET_FILE_DIR:MyTarget> ジェネレータ式 に記述されています。 add_custom_command のドキュメントで説明されています。