いくつかの実行可能ファイルを含むいくつかの「ソース」ファイルを提供しようとしています。これらのソースファイルを(ソースディレクトリから)ビルドディレクトリにコピーしてから、CMakeを使用してインストールディレクトリにコピーする方法があるかどうか疑問に思いました。
ここでの私のより具体的な目標は、独自の* .clファイルに書き込むOpenCLカーネルを含めることです。
例:
mkdir build
cd build
cmake ..
make
これで、ディレクトリに実行可能ファイル(標準のCMake)とsome_opencl_kernel.cl
が含まれているはずです。これを実行可能ファイルで開きます。
_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
_にインストールされます。
ある種のファイルを含むフォルダのツリーをコピーする場合:
# 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パターンを削除するだけです。