いくつかのバイナリを特定の場所にコピーするための Cmake 関数が必要です。これには、次の関数定義があります。
function ( collect_binaries TARGET_NAME DEST_DIR )
set ( targetsToCopy ${ARGN} )
set ( copy_cmd "COMMAND ${CMAKE_COMMAND} -E make_directory ${DEST_DIR}\n" )
foreach ( target ${targetsToCopy} )
LIST( APPEND copy_cmd "COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${target}> ${DEST_DIR}$<TARGET_FILE_NAME:${target}>\n")
endforeach( target ${targetsToCopy} )
#message( FATAL_ERROR ${copy_cmd} )
add_custom_target( ${TARGET_NAME} )
add_custom_command( TARGET ${TARGET_NAME} PRE_BUILD ${copy_cmd} )
endfunction( collect_binaries )
そして、次の使用法:
collect_binaries( bin_copy ${PROJECT_BINARY_DIR}/out/ target_1 target_2 target3 )
プロジェクト ツリー内に target_1、target_2、および target_3 が定義されています。これを念頭に置いて、次の Cmake configure 出力を得ました。
binary_copy.cmake:15 (add_custom_command) での CMake 警告 (dev):
ポリシー CMP0040 が設定されていません: add_custom_command() の TARGET 署名のターゲットが存在する必要があります。ポリシーの詳細については、「cmake --help-policy CMP0040」を実行してください。cmake_policy コマンドを使用してポリシーを設定し、この警告を抑制します。
このコンテキストでは、そのターゲットは不明のようです...しかし、それは存在し、タイプミスはありません。ここでの問題は何ですか?