| 
					
				 | 
			
			
				@@ -76,6 +76,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #   include_directories(${Protobuf_INCLUDE_DIRS}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #   include_directories(${CMAKE_CURRENT_BINARY_DIR}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #   protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS foo.proto) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#   protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS EXPORT_MACRO DLL_EXPORT foo.proto) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #   protobuf_generate_python(PROTO_PY foo.proto) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #   add_executable(bar bar.cc ${PROTO_SRCS} ${PROTO_HDRS}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #   target_link_libraries(bar ${Protobuf_LIBRARIES}) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -89,12 +90,15 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #   Add custom commands to process ``.proto`` files to C++:: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#     protobuf_generate_cpp (<SRCS> <HDRS> [<ARGN>...]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#     protobuf_generate_cpp (<SRCS> <HDRS> [EXPORT_MACRO <MACRO>] [<ARGN>...]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #   ``SRCS`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #     Variable to define with autogenerated source files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #   ``HDRS`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #     Variable to define with autogenerated header files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#   ``EXPORT_MACRO`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#     is a macro which should expand to ``__declspec(dllexport)`` or 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#     ``__declspec(dllimport)`` depending on what is being compiled. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #   ``ARGN`` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #     ``.proto`` files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -110,14 +114,21 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #     ``.proto`` filess 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function(PROTOBUF_GENERATE_CPP SRCS HDRS) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if(NOT ARGN) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cmake_parse_arguments(protobuf "" "EXPORT_MACRO" "" ${ARGN}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  set(PROTO_FILES "${protobuf_UNPARSED_ARGUMENTS}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if(NOT PROTO_FILES) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     message(SEND_ERROR "Error: PROTOBUF_GENERATE_CPP() called without any proto files") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   endif() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if(protobuf_EXPORT_MACRO) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    set(DLL_EXPORT_DECL "dllexport_decl=${protobuf_EXPORT_MACRO}:") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  endif() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if(PROTOBUF_GENERATE_CPP_APPEND_PATH) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     # Create an include path for each file specified 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    foreach(FIL ${ARGN}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    foreach(FIL ${PROTO_FILES}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       get_filename_component(ABS_FIL ${FIL} ABSOLUTE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       get_filename_component(ABS_PATH ${ABS_FIL} PATH) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       list(FIND _protobuf_include_path ${ABS_PATH} _contains_already) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -145,7 +156,7 @@ function(PROTOBUF_GENERATE_CPP SRCS HDRS) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   set(${SRCS}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   set(${HDRS}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  foreach(FIL ${ARGN}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  foreach(FIL ${PROTO_FILES}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     get_filename_component(ABS_FIL ${FIL} ABSOLUTE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     get_filename_component(FIL_WE ${FIL} NAME_WE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if(NOT PROTOBUF_GENERATE_CPP_APPEND_PATH) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -162,7 +173,7 @@ function(PROTOBUF_GENERATE_CPP SRCS HDRS) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				              "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       COMMAND  ${Protobuf_PROTOC_EXECUTABLE} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ARGS --cpp_out  ${CMAKE_CURRENT_BINARY_DIR} ${_protobuf_include_path} ${ABS_FIL} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ARGS "--cpp_out=${DLL_EXPORT_DECL}${CMAKE_CURRENT_BINARY_DIR}" ${_protobuf_include_path} ${ABS_FIL} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       DEPENDS ${ABS_FIL} ${Protobuf_PROTOC_EXECUTABLE} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       COMMENT "Running C++ protocol buffer compiler on ${FIL}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       VERBATIM ) 
			 |