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
これにより、実行可能ファイルと一緒にインストールされます。