34 lines
972 B
CMake
34 lines
972 B
CMake
include_guard(DIRECTORY)
|
|
|
|
function(protobuf_generate_js)
|
|
set(_options)
|
|
set(_one_value_args TARGET_NAME OUTPUT)
|
|
set(_multi_value_args PROTO_INCLUDE_DIRS PROTO_SOURCES)
|
|
cmake_parse_arguments(_ARGS "${_options}" "${_one_value_args}" "${_multi_value_args}" ${ARGN})
|
|
|
|
if (NOT DEFINED _ARGS_TARGET_NAME)
|
|
set(_ARGS_TARGET_NAME "${PROJECT_NAME}_generate_js_protos")
|
|
endif()
|
|
|
|
set(_proto_include_cli_args)
|
|
foreach(_dir ${_ARGS_PROTO_INCLUDE_DIRS})
|
|
list(APPEND _proto_include_cli_args -p ${_dir})
|
|
endforeach()
|
|
|
|
add_custom_command(
|
|
OUTPUT ${_ARGS_OUTPUT}
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
COMMAND npx
|
|
--no-install pbjs
|
|
-t json-module
|
|
-w commonjs
|
|
-o ${_ARGS_OUTPUT}
|
|
${_proto_include_cli_args}
|
|
${_ARGS_PROTO_SOURCES}
|
|
DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/package-lock.json
|
|
${_ARGS_PROTO_SOURCES}
|
|
)
|
|
add_custom_target(${_ARGS_TARGET_NAME} ALL DEPENDS ${_ARGS_OUTPUT})
|
|
endfunction()
|