Update CMakeLists.txt to preprare for gRPC deps. (#691)
							parent
							
								
									31f28b5097
								
							
						
					
					
						commit
						c233aaaac8
					
				|  | @ -21,6 +21,8 @@ set(CARTOGRAPHER_MINOR_VERSION 0) | |||
| set(CARTOGRAPHER_PATCH_VERSION 0) | ||||
| set(CARTOGRAPHER_VERSION ${CARTOGRAPHER_MAJOR_VERSION}.${CARTOGRAPHER_MINOR_VERSION}.${CARTOGRAPHER_PATCH_VERSION}) | ||||
| set(CARTOGRAPHER_SOVERSION ${CARTOGRAPHER_MAJOR_VERSION}.${CARTOGRAPHER_MINOR_VERSION}) | ||||
| option(BUILD_GRPC "build Cartographer gRPC support" false) | ||||
| set(GRPC_PLUGIN_PATH "/usr/local/bin/grpc_cpp_plugin") | ||||
| 
 | ||||
| include("${PROJECT_SOURCE_DIR}/cmake/functions.cmake") | ||||
| google_initialize_cartographer_project() | ||||
|  | @ -56,8 +58,20 @@ file(GLOB_RECURSE ALL_TESTS "*_test.cc") | |||
| file(GLOB_RECURSE ALL_EXECUTABLES "*_main.cc") | ||||
| list(REMOVE_ITEM ALL_SRCS ${ALL_TESTS}) | ||||
| list(REMOVE_ITEM ALL_SRCS ${ALL_EXECUTABLES}) | ||||
| file(GLOB_RECURSE ALL_GRPC_FILES "cartographer_grpc/*") | ||||
| if (NOT ${BUILD_GRPC}) | ||||
|   list_remove_item(ALL_SRCS ALL_GRPC_FILES) | ||||
|   list_remove_item(ALL_TESTS ALL_GRPC_FILES) | ||||
|   list_remove_item(ALL_EXECUTABLES ALL_GRPC_FILES) | ||||
| endif() | ||||
| 
 | ||||
| file(GLOB_RECURSE ALL_PROTOS "*.proto") | ||||
| file(GLOB_RECURSE ALL_GRPC_SERVICES "*_service.proto") | ||||
| list(REMOVE_ITEM ALL_PROTOS ALL_GRPC_SERVICES) | ||||
| if (NOT ${BUILD_GRPC}) | ||||
|   list_remove_item(ALL_PROTOS ALL_GRPC_FILES) | ||||
| endif() | ||||
| 
 | ||||
| set(ALL_PROTO_SRCS) | ||||
| set(ALL_PROTO_HDRS) | ||||
| foreach(ABS_FIL ${ALL_PROTOS}) | ||||
|  | @ -79,10 +93,42 @@ foreach(ABS_FIL ${ALL_PROTOS}) | |||
|     VERBATIM | ||||
|   ) | ||||
| endforeach() | ||||
| 
 | ||||
| set_source_files_properties(${ALL_PROTO_SRCS} ${ALL_PROTO_HDRS} PROPERTIES GENERATED TRUE) | ||||
| list(APPEND ALL_SRCS ${ALL_PROTO_SRCS} ${ALL_PROTO_HDRS}) | ||||
| 
 | ||||
| if(${BUILD_GRPC}) | ||||
|   set(ALL_GRPC_SERVICE_SRCS) | ||||
|   set(ALL_GRPC_SERVICE_HDRS) | ||||
|   foreach(ABS_FIL ${ALL_GRPC_SERVICES}) | ||||
|     file(RELATIVE_PATH REL_FIL ${PROJECT_SOURCE_DIR} ${ABS_FIL}) | ||||
|     get_filename_component(DIR ${REL_FIL} DIRECTORY) | ||||
|     get_filename_component(FIL_WE ${REL_FIL} NAME_WE) | ||||
| 
 | ||||
|     list(APPEND ALL_GRPC_SERVICE_SRCS "${PROJECT_BINARY_DIR}/${DIR}/${FIL_WE}.pb.cc") | ||||
|     list(APPEND ALL_GRPC_SERVICE_HDRS "${PROJECT_BINARY_DIR}/${DIR}/${FIL_WE}.pb.h") | ||||
|     list(APPEND ALL_GRPC_SERVICE_SRCS "${PROJECT_BINARY_DIR}/${DIR}/${FIL_WE}.grpc.pb.cc") | ||||
|     list(APPEND ALL_GRPC_SERVICE_HDRS "${PROJECT_BINARY_DIR}/${DIR}/${FIL_WE}.grpc.pb.h") | ||||
| 
 | ||||
|     add_custom_command( | ||||
|       OUTPUT "${PROJECT_BINARY_DIR}/${DIR}/${FIL_WE}.pb.cc" | ||||
|              "${PROJECT_BINARY_DIR}/${DIR}/${FIL_WE}.pb.h" | ||||
|              "${PROJECT_BINARY_DIR}/${DIR}/${FIL_WE}.grpc.pb.cc" | ||||
|              "${PROJECT_BINARY_DIR}/${DIR}/${FIL_WE}.grpc.pb.h" | ||||
|       COMMAND  ${PROTOBUF_PROTOC_EXECUTABLE} | ||||
|       ARGS --grpc_out  ${PROJECT_BINARY_DIR} | ||||
|         --cpp_out  ${PROJECT_BINARY_DIR} | ||||
|         -I ${PROJECT_SOURCE_DIR} | ||||
|         --plugin=protoc-gen-grpc=${GRPC_PLUGIN_PATH} | ||||
|         ${ABS_FIL} | ||||
|       DEPENDS ${ABS_FIL} | ||||
|       COMMENT "Running C++ protocol buffer compiler with gRPC support on ${ABS_FIL}" | ||||
|       VERBATIM | ||||
|     ) | ||||
|   endforeach() | ||||
|   set_source_files_properties(${ALL_GRPC_SERVICE_SRCS} ${ALL_GRPC_SERVICE_HDRS} PROPERTIES GENERATED TRUE) | ||||
|   list(APPEND ALL_SRCS ${ALL_GRPC_SERVICE_SRCS} ${ALL_GRPC_SERVICE_HDRS}) | ||||
| endif() | ||||
| 
 | ||||
| add_library(${PROJECT_NAME} ${ALL_SRCS}) | ||||
| 
 | ||||
| configure_file( | ||||
|  |  | |||
|  | @ -132,3 +132,11 @@ macro(google_enable_testing) | |||
|   enable_testing() | ||||
|   find_package(GMock REQUIRED) | ||||
| endmacro() | ||||
| 
 | ||||
| macro(list_remove_item REMOVE_FROM TO_REMOVE) | ||||
|   if(${TO_REMOVE}) | ||||
|     list(REMOVE_ITEM ${REMOVE_FROM} ${${TO_REMOVE}}) | ||||
|     message(WARNING "Unnecessary use of list_remove_item. Consider using " | ||||
|       "list(REMOVE_ITEM ${REMOVE_FROM} \${${TO_REMOVE}}.") | ||||
|   endif() | ||||
| endmacro() | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue