Сбой цели cmake, созданной с помощью custom_target
Я пытаюсь добавить пользовательскую цель в мой проект Cmake, который будет выводить файл.hex из.elf. Вот фрагмент сценария, который я использую:
....
set(EXECUTABLE_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/${CMAKE_BUILD_TYPE}")
....
target_link_libraries(${CMAKE_PROJECT_NAME}.elf)
set(COMD "${CMAKE_OBJCOPY} -Oihex ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.elf ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.hex")
add_custom_target(${CMAKE_PROJECT_NAME}.hex DEPENDS ${CMAKE_PROJECT_NAME}.elf COMMAND ${COMD})
Строительство заканчивается так:
-- Configuring done
-- Generating done
-- Build files have been written to: /home/captain/test
[100%] Built target test.elf
/bin/sh: 1: arm-none-eabi-objcopy -Oihex /home/captain/test/Release/test.elf /home/captain/test/Release/test.hex: not found
.... blah blah blah ...
Работает напрямую:
arm-none-eabi-objcopy -Oihex /home/captain/test/Release/test.elf /home/captain/test/Release/test.hex
работает так, как ожидалось. Как это может быть возможно?
1 ответ
Проблема в том, что вы переносите команду в "
:
set(COMD "${CMAKE_OBJCOPY} -Oihex ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.elf ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.hex")
Удалить окружающих "
и должно работать как положено:
set(COMD ${CMAKE_OBJCOPY} -Oihex ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.elf ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.hex)