uas-ugv/components/nanopb/functions.cmake

25 lines
1.2 KiB
CMake
Raw Normal View History

2019-01-03 14:25:54 -07:00
set(NANOPB_PLUGIN "${CMAKE_CURRENT_LIST_DIR}/nanopb/generator/protoc-gen-nanopb")
2019-01-03 14:16:54 -07:00
function(nanopb_generate PROTO_FILE PB_OUT HDR_VAR SRC_VAR)
get_filename_component(PROTO_FILE_NAME ${PROTO_FILE} NAME_WE)
get_filename_component(PROTO_FILE_PATH ${PROTO_FILE} ABSOLUTE BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
get_filename_component(PROTO_FILE_DIR ${PROTO_FILE_PATH} DIRECTORY)
set(PROTO_HDR "${PB_OUT}/${PROTO_FILE_NAME}.pb.h")
set(PROTO_SRC "${PB_OUT}/${PROTO_FILE_NAME}.pb.c")
2019-01-03 14:25:54 -07:00
set(${HDR_VAR} ${${HDR_VAR}} ${PROTO_HDR} PARENT_SCOPE)
set(${SRC_VAR} ${${SRC_VAR}} ${PROTO_SRC} PARENT_SCOPE)
2019-01-03 14:16:54 -07:00
if(NOT CMAKE_SCRIPT_MODE_FILE)
add_custom_command(OUTPUT ${PROTO_HDR} ${PROTO_SRC}
COMMAND protoc
2019-01-03 14:25:54 -07:00
--plugin=protoc-gen-nanopb=${NANOPB_PLUGIN}
2019-01-03 14:16:54 -07:00
--nanopb_out=${PB_OUT}
--proto_path ${PROTO_FILE_DIR}
${PROTO_FILE_PATH}
2019-01-03 14:25:54 -07:00
DEPENDS ${PROTO_FILE_PATH}
COMMENT "Generating nanopb sources for ${PROTO_FILE}")
set_property(SOURCE ${PROTO_HDR} ${PROTO_SRC} PROPERTY GENERATED TRUE)
2019-01-03 14:16:54 -07:00
endif()
list(APPEND ADDITIONAL_MAKE_CLEAN_FILES ${PROTO_HDR} ${PROTO_SRC})
endfunction()