diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 5e818e09..5004270f 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -31,7 +31,7 @@ set(protobuf_DEBUG_POSTFIX "d" CACHE STRING "Default debug postfix") mark_as_advanced(protobuf_DEBUG_POSTFIX) # User options -include("${CMAKE_CURRENT_LIST_DIR}/protobuf-options.cmake") +include(protobuf-options.cmake) # Path to main configure script set(protobuf_CONFIGURE_SCRIPT "../configure.ac") diff --git a/cmake/install.cmake b/cmake/install.cmake index 6d7aa1e0..94ef2198 100644 --- a/cmake/install.cmake +++ b/cmake/install.cmake @@ -6,6 +6,7 @@ foreach(_library libprotoc) set_property(TARGET ${_library} PROPERTY INTERFACE_INCLUDE_DIRECTORIES + $ $) install(TARGETS ${_library} EXPORT protobuf-targets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${_library} @@ -80,7 +81,7 @@ foreach(_file ${nobase_dist_proto_DATA}) endif() endforeach() -# Export configuration +# Install configuration set(_cmakedir_desc "Directory relative to CMAKE_INSTALL to install the cmake configuration files") if(NOT MSVC) set(CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/protobuf" CACHE STRING "${_cmakedir_desc}") @@ -89,33 +90,34 @@ else() endif() mark_as_advanced(CMAKE_INSTALL_CMAKEDIR) -# Import configuration -install(EXPORT protobuf-targets - DESTINATION "${CMAKE_INSTALL_CMAKEDIR}" - NAMESPACE protobuf:: - COMPONENT protobuf-export) - configure_file(protobuf-config.cmake.in ${CMAKE_INSTALL_CMAKEDIR}/protobuf-config.cmake @ONLY) configure_file(protobuf-config-version.cmake.in ${CMAKE_INSTALL_CMAKEDIR}/protobuf-config-version.cmake @ONLY) configure_file(protobuf-module.cmake.in ${CMAKE_INSTALL_CMAKEDIR}/protobuf-module.cmake @ONLY) +configure_file(protobuf-options.cmake + ${CMAKE_INSTALL_CMAKEDIR}/protobuf-options.cmake @ONLY) -# Build tree import configuration (for import from subprojects) -if(NOT EXISTS "${protobuf_DIR}") - set(protobuf_DIR "${protobuf_BINARY_DIR}/${CMAKE_INSTALL_CMAKEDIR}") - set(Protobuf_DIR "${protobuf_DIR}") - file(COPY - "${CMAKE_CURRENT_LIST_DIR}/protobuf-options.cmake" - "${CMAKE_CURRENT_LIST_DIR}/protobuf-targets.cmake" - DESTINATION "${protobuf_DIR}") -endif() +# Allows the build directory to be used as a find directory. +export(TARGETS libprotobuf-lite libprotobuf libprotoc protoc + NAMESPACE protobuf:: + FILE ${CMAKE_INSTALL_CMAKEDIR}/protobuf-targets.cmake +) -install(FILES - "${CMAKE_CURRENT_LIST_DIR}/protobuf-options.cmake" - "${protobuf_BINARY_DIR}/${CMAKE_INSTALL_CMAKEDIR}/protobuf-config.cmake" - "${protobuf_BINARY_DIR}/${CMAKE_INSTALL_CMAKEDIR}/protobuf-config-version.cmake" - "${protobuf_BINARY_DIR}/${CMAKE_INSTALL_CMAKEDIR}/protobuf-module.cmake" +install(EXPORT protobuf-targets DESTINATION "${CMAKE_INSTALL_CMAKEDIR}" + NAMESPACE protobuf:: COMPONENT protobuf-export) + +install(DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_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 examples + COMPONENT protobuf-examples) +endif() diff --git a/cmake/protobuf-targets.cmake b/cmake/protobuf-targets.cmake deleted file mode 100644 index 72660aaa..00000000 --- a/cmake/protobuf-targets.cmake +++ /dev/null @@ -1,17 +0,0 @@ -# Library aliases -foreach(_library - libprotobuf-lite - libprotobuf - libprotoc) - if(TARGET ${_library} AND NOT TARGET protobuf::${_library}) - add_library(protobuf::${_library} ALIAS ${_library}) - endif() -endforeach() - -# Executable aliases -foreach(_executable - protoc) - if(TARGET ${_executable} AND NOT TARGET protobuf::${_executable}) - add_executable(protobuf::${_executable} ALIAS ${_executable}) - endif() -endforeach()