|
@@ -17,7 +17,7 @@ function(qtprotobuf_link_archive TARGET GENERATED_TARGET)
|
|
endfunction()
|
|
endfunction()
|
|
|
|
|
|
function(qtprotobuf_generate)
|
|
function(qtprotobuf_generate)
|
|
- set(options MULTI QML COMMENTS)
|
|
|
|
|
|
+ set(options MULTI QML COMMENTS FOLDER)
|
|
set(oneValueArgs OUT_DIR TARGET GENERATED_TARGET)
|
|
set(oneValueArgs OUT_DIR TARGET GENERATED_TARGET)
|
|
set(multiValueArgs GENERATED_HEADERS EXCLUDE_HEADERS PROTO_FILES PROTO_INCLUDES)
|
|
set(multiValueArgs GENERATED_HEADERS EXCLUDE_HEADERS PROTO_FILES PROTO_INCLUDES)
|
|
cmake_parse_arguments(qtprotobuf_generate "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
cmake_parse_arguments(qtprotobuf_generate "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
@@ -40,6 +40,8 @@ function(qtprotobuf_generate)
|
|
set(GENERATION_TYPE "SIGNLE")
|
|
set(GENERATION_TYPE "SIGNLE")
|
|
if(qtprotobuf_generate_MULTI)
|
|
if(qtprotobuf_generate_MULTI)
|
|
set(GENERATION_TYPE "MULTI")
|
|
set(GENERATION_TYPE "MULTI")
|
|
|
|
+ set(qtprotobuf_generate_FOLDER TRUE)
|
|
|
|
+ message(STATUS "Multi-file generation is set. Folder-based generation enabled automatically for ${GENERATED_TARGET_NAME}")
|
|
endif()
|
|
endif()
|
|
set(GENERATION_OPTIONS ${GENERATION_TYPE})
|
|
set(GENERATION_OPTIONS ${GENERATION_TYPE})
|
|
|
|
|
|
@@ -53,6 +55,13 @@ function(qtprotobuf_generate)
|
|
set(GENERATION_OPTIONS "${GENERATION_OPTIONS}:COMMENTS")
|
|
set(GENERATION_OPTIONS "${GENERATION_OPTIONS}:COMMENTS")
|
|
endif()
|
|
endif()
|
|
|
|
|
|
|
|
+ if(qtprotobuf_generate_FOLDER)
|
|
|
|
+ message(STATUS "Enabled FOLDER generation for ${GENERATED_TARGET_NAME}")
|
|
|
|
+ set(GENERATION_OPTIONS "${GENERATION_OPTIONS}:FOLDER")
|
|
|
|
+ set(FOLDER_ENABLED "FOLDER")
|
|
|
|
+ endif()
|
|
|
|
+
|
|
|
|
+
|
|
if(WIN32)
|
|
if(WIN32)
|
|
set(PROTOC_COMMAND set QT_PROTOBUF_OPTIONS=${GENERATION_OPTIONS}&& $<TARGET_FILE:protobuf::protoc>)
|
|
set(PROTOC_COMMAND set QT_PROTOBUF_OPTIONS=${GENERATION_OPTIONS}&& $<TARGET_FILE:protobuf::protoc>)
|
|
else()
|
|
else()
|
|
@@ -72,7 +81,7 @@ function(qtprotobuf_generate)
|
|
foreach(PROTO_FILE IN LISTS qtprotobuf_generate_PROTO_FILES)
|
|
foreach(PROTO_FILE IN LISTS qtprotobuf_generate_PROTO_FILES)
|
|
get_filename_component(BASE_DIR ${PROTO_FILE} DIRECTORY)
|
|
get_filename_component(BASE_DIR ${PROTO_FILE} DIRECTORY)
|
|
set(PROTO_INCLUDES -I"${BASE_DIR}" ${PROTO_INCLUDES})
|
|
set(PROTO_INCLUDES -I"${BASE_DIR}" ${PROTO_INCLUDES})
|
|
- execute_process(COMMAND ${GO_EXECUTABLE} run ${PROTO_PARSER} ${PROTO_FILE} ${GENERATION_TYPE} OUTPUT_VARIABLE GENERATED_HEADERS_PART ERROR_VARIABLE PARSER_ERROR)
|
|
|
|
|
|
+ execute_process(COMMAND ${GO_EXECUTABLE} run ${PROTO_PARSER} ${PROTO_FILE} ${GENERATION_TYPE} ${FOLDER_ENABLED} OUTPUT_VARIABLE GENERATED_HEADERS_PART ERROR_VARIABLE PARSER_ERROR)
|
|
set(GENERATED_HEADERS ${GENERATED_HEADERS} ${GENERATED_HEADERS_PART})
|
|
set(GENERATED_HEADERS ${GENERATED_HEADERS} ${GENERATED_HEADERS_PART})
|
|
endforeach()
|
|
endforeach()
|
|
endif()
|
|
endif()
|
|
@@ -107,8 +116,13 @@ function(qtprotobuf_generate)
|
|
get_filename_component(GENERATED_BASENAME ${GENERATED_HEADER} NAME)
|
|
get_filename_component(GENERATED_BASENAME ${GENERATED_HEADER} NAME)
|
|
string(REGEX REPLACE "\\.[^.]*$" "" GENERATED_BASENAME ${GENERATED_BASENAME})
|
|
string(REGEX REPLACE "\\.[^.]*$" "" GENERATED_BASENAME ${GENERATED_BASENAME})
|
|
|
|
|
|
- list(APPEND GENERATED_SOURCES_FULL ${OUT_DIR}/${GENERATED_DIRECTORY}/${GENERATED_BASENAME}.cpp)
|
|
|
|
- list(APPEND GENERATED_HEADERS_FULL ${OUT_DIR}/${GENERATED_DIRECTORY}/${GENERATED_BASENAME}.h)
|
|
|
|
|
|
+ if(qtprotobuf_generate_FOLDER)
|
|
|
|
+ list(APPEND GENERATED_SOURCES_FULL ${OUT_DIR}/${GENERATED_DIRECTORY}/${GENERATED_BASENAME}.cpp)
|
|
|
|
+ list(APPEND GENERATED_HEADERS_FULL ${OUT_DIR}/${GENERATED_DIRECTORY}/${GENERATED_BASENAME}.h)
|
|
|
|
+ else()
|
|
|
|
+ list(APPEND GENERATED_SOURCES_FULL ${OUT_DIR}/${GENERATED_BASENAME}.cpp)
|
|
|
|
+ list(APPEND GENERATED_HEADERS_FULL ${OUT_DIR}/${GENERATED_BASENAME}.h)
|
|
|
|
+ endif()
|
|
set_property(SOURCE ${OUT_DIR}/${GENERATED_DIRECTORY}/${GENERATED_BASENAME}.cpp PROPERTY SKIP_AUTOMOC ON)
|
|
set_property(SOURCE ${OUT_DIR}/${GENERATED_DIRECTORY}/${GENERATED_BASENAME}.cpp PROPERTY SKIP_AUTOMOC ON)
|
|
endforeach()
|
|
endforeach()
|
|
|
|
|