Запуск objcopy в пользовательской команде CMAKE вызывает ошибку во время make - PullRequest
0 голосов
/ 01 июля 2018

Я пытаюсь добавить команду после сборки в небольшой проект, который автоматически возьмет мой выходной файл сборки (ELF) и преобразует его в формат Intel HEX для перепрограммирования на микроконтроллере.

Однако, когда я добавляю эту команду, сборка завершается неудачно. Он повторяет команду, заменив все строки переменных CMake, запускаемые оболочкой, и исправляет ее с помощью : not found.

Когда я запускаю эту точную строку в терминале после обычной успешной сборки ELF, она работает как положено. Есть ли что-то, что мне не хватает с тем, как CMake справляется с этим?

Я добавил цель в свой CMakeLists.txt следующим образом:

add_custom_command(
    TARGET ${EXECUTABLE_NAME}
    POST_BUILD
    COMMAND "${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE_NAME} ${PROJECT_NAME}.hex"
)

Команда в конечном итоге преобразуется в <absolute-path>/avr-objcopy -O ihex test_blink.elf test_blink.hex, что я могу проверить, поскольку она выводится CMake на терминал.

1 Ответ

0 голосов
/ 01 декабря 2018

Эта строка неверна:

COMMAND "${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE_NAME} ${PROJECT_NAME}.hex"

Вы должны использовать ключевое слово ARGS:

COMMAND ${CMAKE_OBJCOPY} ARGS -O ihex ${EXECUTABLE_NAME} ${PROJECT_NAME}.hex
...