0

I am trying to add a custom target to my Cmake project, which will output .hex file out of .elf. Here is a piece of script I use:

....
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})

Building ends up like this:

-- 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 ...

Running directly:

arm-none-eabi-objcopy -Oihex /home/captain/test/Release/test.elf /home/captain/test/Release/test.hex

works just as expected. How might it be possible?

Peter V
  • 71
  • 4

1 Answers1

1

The problem is that you wrap the command in ":

set(COMD "${CMAKE_OBJCOPY} -Oihex ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.elf ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.hex")

Remove the surrounding " and it should work as expected:

set(COMD ${CMAKE_OBJCOPY} -Oihex ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.elf ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_PROJECT_NAME}.hex)
thomas_f
  • 1,854
  • 19
  • 27