| include(GNUInstallDirs) |
| |
| configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/protobuf.pc.cmake |
| ${CMAKE_CURRENT_BINARY_DIR}/protobuf.pc @ONLY) |
| configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/protobuf-lite.pc.cmake |
| ${CMAKE_CURRENT_BINARY_DIR}/protobuf-lite.pc @ONLY) |
| |
| set(_protobuf_libraries libprotobuf-lite libprotobuf) |
| if (protobuf_BUILD_LIBPROTOC) |
| list(APPEND _protobuf_libraries libprotoc) |
| endif (protobuf_BUILD_LIBPROTOC) |
| |
| foreach(_library ${_protobuf_libraries}) |
| set_property(TARGET ${_library} |
| PROPERTY INTERFACE_INCLUDE_DIRECTORIES |
| $<BUILD_INTERFACE:${protobuf_SOURCE_DIR}/src> |
| $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) |
| if (UNIX AND NOT APPLE) |
| set_property(TARGET ${_library} |
| PROPERTY INSTALL_RPATH "$ORIGIN") |
| elseif (APPLE) |
| set_property(TARGET ${_library} |
| PROPERTY INSTALL_RPATH "@loader_path") |
| endif() |
| install(TARGETS ${_library} EXPORT protobuf-targets |
| RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${_library} |
| LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${_library} |
| ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${_library}) |
| endforeach() |
| |
| if (protobuf_BUILD_PROTOC_BINARIES) |
| install(TARGETS protoc EXPORT protobuf-targets |
| RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT protoc |
| BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT protoc) |
| if (UNIX AND NOT APPLE) |
| set_property(TARGET protoc |
| PROPERTY INSTALL_RPATH "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}") |
| elseif (APPLE) |
| set_property(TARGET protoc |
| PROPERTY INSTALL_RPATH "@loader_path/../lib") |
| endif() |
| endif (protobuf_BUILD_PROTOC_BINARIES) |
| |
| install(FILES ${CMAKE_CURRENT_BINARY_DIR}/protobuf.pc ${CMAKE_CURRENT_BINARY_DIR}/protobuf-lite.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") |
| |
| include(${protobuf_SOURCE_DIR}/src/file_lists.cmake) |
| set(protobuf_HEADERS |
| ${libprotobuf_hdrs} |
| ${libprotoc_hdrs} |
| ${wkt_protos_files} |
| ${descriptor_proto_proto_srcs} |
| ${plugin_proto_proto_srcs} |
| ) |
| foreach(_header ${protobuf_HEADERS}) |
| string(REPLACE "${protobuf_SOURCE_DIR}/src" "" _header ${_header}) |
| get_filename_component(_extract_from "${protobuf_SOURCE_DIR}/src/${_header}" ABSOLUTE) |
| get_filename_component(_extract_name ${_header} NAME) |
| get_filename_component(_extract_to "${CMAKE_INSTALL_INCLUDEDIR}/${_header}" DIRECTORY) |
| install(FILES "${_extract_from}" |
| DESTINATION "${_extract_to}" |
| COMPONENT protobuf-headers |
| RENAME "${_extract_name}") |
| endforeach() |
| |
| # Install configuration |
| set(_install_cmakedir_desc "Directory relative to CMAKE_INSTALL to install the cmake configuration files") |
| set(_build_cmakedir_desc "Directory relative to CMAKE_CURRENT_BINARY_DIR for cmake configuration files") |
| set(_exampledir_desc "Directory relative to CMAKE_INSTALL_DATA to install examples") |
| set(_protobuf_subdir_desc "Subdirectory in which to install cmake configuration files") |
| if(NOT MSVC) |
| set(protobuf_CMAKE_SUBDIR "cmake/protobuf" CACHE STRING "${_protobuf_subdir_desc}") |
| set(CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/${protobuf_CMAKE_SUBDIR}" CACHE STRING "${_install_cmakedir_desc}") |
| set(CMAKE_INSTALL_EXAMPLEDIR "${CMAKE_INSTALL_DATADIR}/protobuf/examples" CACHE STRING "${_exampledir_desc}") |
| else() |
| set(protobuf_CMAKE_SUBDIR "cmake" CACHE STRING "${_protobuf_subdir_desc}") |
| set(CMAKE_INSTALL_CMAKEDIR "cmake" CACHE STRING "${_cmakedir_desc}") |
| set(CMAKE_INSTALL_EXAMPLEDIR "examples" CACHE STRING "${_exampledir_desc}") |
| endif() |
| set(CMAKE_BUILD_CMAKEDIR "${CMAKE_CURRENT_BINARY_DIR}/${protobuf_CMAKE_SUBDIR}" CACHE STRING "${_build_cmakedir_desc}") |
| mark_as_advanced(protobuf_CMAKE_SUBDIR) |
| mark_as_advanced(CMAKE_BUILD_CMAKEDIR) |
| mark_as_advanced(CMAKE_INSTALL_CMAKEDIR) |
| mark_as_advanced(CMAKE_INSTALL_EXAMPLEDIR) |
| |
| configure_file(${protobuf_SOURCE_DIR}/cmake/protobuf-config.cmake.in |
| ${CMAKE_BUILD_CMAKEDIR}/protobuf-config.cmake @ONLY) |
| configure_file(${protobuf_SOURCE_DIR}/cmake/protobuf-config-version.cmake.in |
| ${CMAKE_BUILD_CMAKEDIR}/protobuf-config-version.cmake @ONLY) |
| configure_file(${protobuf_SOURCE_DIR}/cmake/protobuf-module.cmake.in |
| ${CMAKE_BUILD_CMAKEDIR}/protobuf-module.cmake @ONLY) |
| configure_file(${protobuf_SOURCE_DIR}/cmake/protobuf-options.cmake |
| ${CMAKE_BUILD_CMAKEDIR}/protobuf-options.cmake @ONLY) |
| configure_file(${protobuf_SOURCE_DIR}/cmake/protobuf-generate.cmake |
| ${CMAKE_BUILD_CMAKEDIR}/protobuf-generate.cmake @ONLY) |
| |
| # Allows the build directory to be used as a find directory. |
| |
| install(EXPORT protobuf-targets |
| DESTINATION "${CMAKE_INSTALL_CMAKEDIR}" |
| NAMESPACE protobuf:: |
| COMPONENT protobuf-export |
| ) |
| |
| install(DIRECTORY ${CMAKE_BUILD_CMAKEDIR}/ |
| DESTINATION "${CMAKE_INSTALL_CMAKEDIR}" |
| COMPONENT protobuf-export |
| PATTERN protobuf-targets.cmake EXCLUDE |
| ) |
| |
| option(protobuf_INSTALL_EXAMPLES "Install the examples folder" OFF) |
| if(protobuf_INSTALL_EXAMPLES) |
| install(DIRECTORY examples/ |
| DESTINATION "${CMAKE_INSTALL_EXAMPLEDIR}" |
| COMPONENT protobuf-examples) |
| endif() |
| |
| if (protobuf_INSTALL_TESTS) |
| install(TARGETS gmock EXPORT protobuf-targets |
| RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} |
| LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} |
| ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
| endif() |