| if(protobuf_VERBOSE) | |
| message(STATUS "Protocol Buffers Examples Configuring...") | |
| endif() | |
| get_filename_component(examples_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 compatiblity 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 compatiblity mode. | |
| add_examples_build(examples-installed-legacy | |
| "-Dprotobuf_DIR:PATH=${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_CMAKEDIR}" | |
| "-Dprotobuf_MODULE_COMPATIBLE:BOOL=TRUE" | |
| ) | |
| endif() |