CMake でデータファイルを最適に処理するにはどうすればよいでしょうか? 質問する

CMake でデータファイルを最適に処理するにはどうすればよいでしょうか? 質問する

コードといくつかのデータ ファイル (正確には画像) を含む CMake プロジェクトがあります。

私のディレクトリ構造は次のようになります:

  • ソース
  • データ

srcにはソースコード、dataにはデータファイルが含まれています。CMakeはソース外ビルドを提案するので、作る実行可能プログラムはありますが、データ ファイルがないため、プログラムを実行できません。

もちろん、インストールするデータ ファイルを必要な場所にコピーして動作させるため、現在は次のように開発しています。

  1. cmake -DCMAKE_INSTALL_DIR=dist
  2. <edit source code>
  3. インストールする
  4. dist/myprogram.exe

コマンドラインとエディタで作業している場合は問題ありませんが、最近Eclipse CDTに移行することにしました。CMakeからEclipseプロジェクトを生成するのはうまくいきますが、手動でインストールEclipse からのターゲットはあまり良くありません。

皆さんはこの問題にどのように取り組んでいますか? プログラムには、バイナリが存在しない場所でもデータ ディレクトリを見つけようとする巧妙なアルゴリズムがありますか? または、ソース外ビルドを使用していませんか?

ベストアンサー1

configure_fileその問題は解決するはずです。

データ ディレクトリに CMakeLists.txt ファイルがあり、そこには次の内容が含まれています。

configure_file(data_file ${CMAKE_CURRENT_BINARY_DIR}/data_file COPYONLY)

これにより、cmake が呼び出されたときに指定されたファイルがビルド ディレクトリにコピーされるため、ソース外ビルドでも同じ場所で使用できるようになります。

configure_fileディレクトリはサポートしていませんが、fileコマンドは次のことを行います:

file(COPY assets DESTINATION ${CMAKE_CURRENT_BINARY_DIR})

おすすめ記事