From f5c06104055159f29a227c51f495aea0fc31cbeb Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=A2=85=ED=98=84/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Staff=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Thu, 1 Nov 2018 17:37:13 +0900 Subject: [PATCH] Introduce FlatBuffers_Target function (#2085) This commit introduces FlatBuffers_Target function which directly creates a target. Signed-off-by: Jonghyun Park --- cmake/packages/FlatBuffersConfig.cmake | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/cmake/packages/FlatBuffersConfig.cmake b/cmake/packages/FlatBuffersConfig.cmake index f3749df..851d898 100644 --- a/cmake/packages/FlatBuffersConfig.cmake +++ b/cmake/packages/FlatBuffersConfig.cmake @@ -70,4 +70,38 @@ if(FlatBuffers_FOUND) set(${PREFIX}_SOURCES ${OUTPUT_FILES} PARENT_SCOPE) set(${PREFIX}_INCLUDE_DIRS ${abs_output_dir} PARENT_SCOPE) endfunction(FlatBuffers_Generate) + + function(FlatBuffers_Target TGT) + set(oneValueArgs OUTPUT_DIR SCHEMA_DIR) + set(multiValueArgs SCHEMA_FILES) + cmake_parse_arguments(ARG "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + message(STATUS "'${ARG_OUTPUT_DIR}' '${ARG_SCHEMA_DIR}' '${ARG_SCHEMA_FILES}'") + + get_filename_component(abs_output_dir ${ARG_OUTPUT_DIR} ABSOLUTE) + get_filename_component(abs_schema_dir ${ARG_SCHEMA_DIR} ABSOLUTE) + + foreach(schema ${ARG_SCHEMA_FILES}) + get_filename_component(schema_fn "${schema}" NAME) + get_filename_component(dir "${schema}" DIRECTORY) + + get_filename_component(schema_fn_we "${schema_fn}" NAME_WE) + + list(APPEND SCHEMA_FILES "${abs_schema_dir}/${schema}") + list(APPEND OUTPUT_FILES "${abs_output_dir}/${schema_fn_we}_generated.h") + endforeach() + + add_custom_command(OUTPUT ${OUTPUT_FILES} + COMMAND ${CMAKE_COMMAND} -E make_directory "${abs_output_dir}" + COMMAND "$" -c --no-includes + --no-union-value-namespacing + --gen-object-api -o "${abs_output_dir}" + ${SCHEMA_FILES} + DEPENDS flatc) + + add_library(${TGT} INTERFACE) + target_sources(${TGT} INTERFACE ${OUTPUT_FILES}) + target_include_directories(${TGT} INTERFACE "${ARG_OUTPUT_DIR}") + target_link_libraries(${TGT} INTERFACE flatbuffers) + endfunction(FlatBuffers_Target) endif(FlatBuffers_FOUND) -- 2.7.4