Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Libor Bukata
CMake
Commits
1ee20192
Commit
1ee20192
authored
May 23, 2017
by
a-andre
Committed by
Brad King
May 26, 2017
Browse files
FindProtobuf: add optional export declaration macro to generated cpp files
parent
56f87f17
Changes
2
Hide whitespace changes
Inline
Side-by-side
Help/release/dev/FindProtobuf-export-macro.rst
0 → 100644
View file @
1ee20192
FindProtobuf-export-macro
-------------------------
* The :module:`FindProtobuf` module :command:`protobuf_generate_cpp`
command gained an ``EXPORT_MACRO`` option to specify the name of
a DLL export markup macro.
Modules/FindProtobuf.cmake
View file @
1ee20192
...
...
@@ -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
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment