Я хотел бы иметь функцию Cmake для копирования некоторых двоичных файлов в определенное место. Fo этого у меня есть следующее определение функции:Cmake: add_custom_command аргумент на основе содержимого переменной
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 настроить выход:
CMake Предупреждение (DEV) в binary_copy.cmake: 15 (add_custom_command):
Политика CMP0040 не установлено: Мишень в TARGET подписи add_custom_command() должен существовать. Запустите «cmake -help-policy CMP0040» для получения информации о политике. Используйте команду cmake_policy, чтобы установить политику и подавить это предупреждение.
Похоже, что цель в неизвестности в этом контексте ... но она существует и нет опечатки. В чем проблема?
Я пробовал делать то же, что и вы, с помощью специальной команды, возможно, но уродливой. То, что вы действительно хотите сделать, это установить двоичные файлы INSTALL в место, меньше кода и лучше – GameDeveloper