Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
2.1 KiB
57 lines
2.1 KiB
if(protobuf_VERBOSE) |
|
message(STATUS "Protocol Buffers Examples Configuring...") |
|
endif() |
|
|
|
get_filename_component(examples_dir "${protobuf_SOURCE_DIR}/examples" ABSOLUTE) |
|
|
|
if(protobuf_VERBOSE) |
|
message(STATUS "Protocol Buffers Examples Configuring done") |
|
endif() |
|
include(ExternalProject) |
|
|
|
# Internal utility function: Create a custom target representing a build of examples with custom options. |
|
function(add_examples_build NAME) |
|
|
|
ExternalProject_Add(${NAME} |
|
PREFIX ${NAME} |
|
SOURCE_DIR "${examples_dir}" |
|
BINARY_DIR ${NAME} |
|
STAMP_DIR ${NAME}/logs |
|
INSTALL_COMMAND "" #Skip |
|
LOG_CONFIGURE 1 |
|
CMAKE_CACHE_ARGS "-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}" |
|
"-Dprotobuf_VERBOSE:BOOL=${protobuf_VERBOSE}" |
|
${ARGN} |
|
) |
|
set_property(TARGET ${NAME} PROPERTY FOLDER "Examples") |
|
set_property(TARGET ${NAME} PROPERTY EXCLUDE_FROM_ALL TRUE) |
|
endfunction() |
|
|
|
# Add examples as an external project. |
|
# sub_directory cannot be used because the find_package(protobuf) call would cause failures with redefined targets. |
|
add_examples_build(examples "-Dprotobuf_DIR:PATH=${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_CMAKEDIR}") |
|
add_dependencies(examples libprotobuf protoc) |
|
|
|
option(protobuf_BUILD_EXAMPLES_MULTITEST "Build Examples in multiple configurations. Useful for testing." OFF) |
|
mark_as_advanced(protobuf_BUILD_EXAMPLES_MULTITEST) |
|
if(protobuf_BUILD_EXAMPLES_MULTITEST) |
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON) |
|
|
|
#Build using the legacy compatibility module. |
|
add_examples_build(examples-legacy |
|
"-Dprotobuf_DIR:PATH=${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_CMAKEDIR}" |
|
"-Dprotobuf_MODULE_COMPATIBLE:BOOL=TRUE" |
|
) |
|
add_dependencies(examples-legacy libprotobuf protoc) |
|
|
|
#Build using the installed library. |
|
add_examples_build(examples-installed |
|
"-Dprotobuf_DIR:PATH=${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_CMAKEDIR}" |
|
) |
|
|
|
#Build using the installed library in legacy compatibility mode. |
|
add_examples_build(examples-installed-legacy |
|
"-Dprotobuf_DIR:PATH=${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_CMAKEDIR}" |
|
"-Dprotobuf_MODULE_COMPATIBLE:BOOL=TRUE" |
|
) |
|
endif()
|
|
|