20

いくつかの「ソース」ファイルをいくつかの実行可能ファイルとともに提供しようとしています。これらのソース ファイルを (ソース ディレクトリから) ビルド ディレクトリにコピーしてから、CMake を使用してインストール ディレクトリにコピーする方法があるかどうか疑問に思っていました。

ここでのより具体的な目標は、独自の *.cl ファイルに記述した OpenCL カーネルを含めることです。

例:

mkdir build
cd build
cmake ..
make

これで、私のディレクトリには実行可能ファイル (標準の CMake) が含まれているはずsome_opencl_kernel.clです。これを実行可能ファイルで開きます。

4

2 に答える 2

31

add_custom_command次のようなものを追加することで、ファイルをビルド ツリーにコピーできます。

add_custom_command(TARGET MyExe POST_BUILD
                   COMMAND ${CMAKE_COMMAND} -E copy_if_different
                       ${CMAKE_CURRENT_SOURCE_DIR}/src/some_opencl_kernel.cl
                       $<TARGET_FILE_DIR:MyExe>
                   )

これにより、ビルド ツリー内の実行可能ファイルと同じディレクトリにMyExeファイルがコピーされるビルド後のイベントがターゲット (私は と呼んでいます) に追加されます。src/some_opencl_kernel.cl

ビルド ツリーにファイルをコピーする方法は他にもさまざまありますが、「ジェネレータ式」$<TARGET_FILE_DIR:MyExe>を使用してビルド ツリー内の実行可能ファイルのディレクトリの場所を特定するこの方法が気に入っています。これは、ビルドタイプやプラットフォームなどによって異なる可能性があるため、ジェネレータ式は、私が感じるこの場所を指定する最も信頼できるクロスプラットフォームの方法です。

install(FILES ...)インストールに関しては、コマンドを使用するだけです。実行可能ファイルに次のようなものがあると仮定します。

install(TARGETS MyExe RUNTIME DESTINATION bin)

追加するだけです:

install(FILES src/some_opencl_kernel.cl DESTINATION bin)

${CMAKE_INSTALL_PREFIX}/bin/some_opencl_kernel.clこれにより、実行可能ファイルと一緒にインストールされます。

于 2013-03-29T01:40:20.883 に答える
21

あるタイプのファイルを含むフォルダのツリーをコピーする場合:

  # Copy all assets to resources file
  INSTALL(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/assets/ DESTINATION ${INSTALL_PATH}/assets
          FILES_MATCHING PATTERN "*.dae"  PATTERN "*.jpg")

フォルダー内のすべてのファイルをコピーする場合は、FILES_MATCHING パターンを削除するだけです。

于 2014-10-23T07:39:46.370 に答える