Using Build Event Callbacks
A component can register a callback that the build system invokes at a specific point in the build. This is the v2 way to run a custom step on the linked application, for example running a tool on the executable, without relying on internal build targets or properties.
Registering a Callback
A component registers a callback in its project_include.cmake with idf_component_register_build_event_callback. The callback must be a CMake function defined in the same file. At the specified event, the build system invokes the callback and passes the relevant CMake target as the first argument.
function(my_post_elf_hook target)
add_custom_command(TARGET ${target} POST_BUILD
COMMAND my_tool "$<TARGET_FILE:${target}>"
COMMENT "Running my_tool on the executable")
endfunction()
idf_component_register_build_event_callback(EVENT POST_ELF CALLBACK my_post_elf_hook)
Supported Events
POST_ELFFired after the executable target is created and linked, but before the binary (
.bin) image is generated. The callback receives the executable target name. Use it to act on the ELF, for example by attaching aPOST_BUILDcommand to the executable withadd_custom_command(TARGET ... POST_BUILD ...), or to add custom targets that depend on the executable.
POST_ELF is currently the only supported event. Additional events may be added in the future when required.
In v1, this kind of post-link step used idf_build_add_post_elf_dependency, which is not available in v2; see idf_build_add_post_elf_dependency and idf_build_get_post_elf_dependencies are Unavailable.