diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ea598d9..8225761f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,6 +39,9 @@ include(CompilerChecks.cmake) include(MacroEnsureOutOfSourceBuild) macro_ensure_out_of_source_build("${PROJECT_NAME} requires an out of source build. Please create a separate build directory and run 'cmake /path/to/${PROJECT_NAME} [options]' there.") +# Copy library files to a lib sub-directory +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") + # search for libraries if (WITH_ZLIB) find_package(ZLIB REQUIRED) @@ -116,11 +119,22 @@ install( ) endif (UNIX) -# cmake config files +# CMake config files +include(CMakePackageConfigHelpers) + set(LIBSSH_LIBRARY_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}ssh${CMAKE_SHARED_LIBRARY_SUFFIX}) -configure_file(${PROJECT_NAME}-config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake @ONLY) -configure_file(${PROJECT_NAME}-config-version.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake @ONLY) +# libssh-config-version.cmake +write_basic_package_version_file(libssh-config-version.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion) + +# libssh-config.cmake +configure_package_config_file(${PROJECT_NAME}-config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_DIR}/${PROJECT_NAME} + PATH_VARS INCLUDE_INSTALL_DIR LIB_INSTALL_DIR) + install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake @@ -131,10 +145,6 @@ install( devel ) - -# in tree build settings -configure_file(libssh-build-tree-settings.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/libssh-build-tree-settings.cmake @ONLY) - if (WITH_EXAMPLES) add_subdirectory(examples) endif (WITH_EXAMPLES) diff --git a/libssh-build-tree-settings.cmake.in b/libssh-build-tree-settings.cmake.in deleted file mode 100644 index 16b406aa..00000000 --- a/libssh-build-tree-settings.cmake.in +++ /dev/null @@ -1 +0,0 @@ -set(LIBSSH_INLUDE_DIR @PROJECT_SOURCE_DIR@/include) diff --git a/libssh-config-version.cmake.in b/libssh-config-version.cmake.in deleted file mode 100644 index 4bff45e2..00000000 --- a/libssh-config-version.cmake.in +++ /dev/null @@ -1,11 +0,0 @@ -set(PACKAGE_VERSION @PROJECT_VERSION@) - -# Check whether the requested PACKAGE_FIND_VERSION is compatible -if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") - set(PACKAGE_VERSION_COMPATIBLE FALSE) -else() - set(PACKAGE_VERSION_COMPATIBLE TRUE) - if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}") - set(PACKAGE_VERSION_EXACT TRUE) - endif() -endif() diff --git a/libssh-config.cmake.in b/libssh-config.cmake.in index b34cd4fa..11388f00 100644 --- a/libssh-config.cmake.in +++ b/libssh-config.cmake.in @@ -1,15 +1,15 @@ -get_filename_component(LIBSSH_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +@PACKAGE_INIT@ -if (EXISTS "${LIBSSH_CMAKE_DIR}/CMakeCache.txt") - # In build tree - include(${LIBSSH_CMAKE_DIR}/libssh-build-tree-settings.cmake) +if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/CMakeCache.txt") + # In tree build + set_and_check(LIBSSH_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/include") + set_and_check(LIBSSH_LIBRARIES "${CMAKE_CURRENT_LIST_DIR}/lib/@LIBSSH_LIBRARY_NAME@") else() - set(LIBSSH_INCLUDE_DIR @INCLUDE_INSTALL_DIR@) + set_and_check(LIBSSH_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") + set_and_check(LIBSSH_LIBRARIES "@PACKAGE_LIB_INSTALL_DIR@/@LIBSSH_LIBRARY_NAME@") endif() -set(LIBSSH_LIBRARY @LIB_INSTALL_DIR@/@LIBSSH_LIBRARY_NAME@) -set(LIBSSH_LIBRARIES @LIB_INSTALL_DIR@/@LIBSSH_LIBRARY_NAME@) +# For backward compatibility +set(LIBSSH_LIBRARY ${LIBSSH_LIBRARIES}) -set(LIBSSH_THREADS_LIBRARY @LIB_INSTALL_DIR@/@LIBSSH_THREADS_LIBRARY_NAME@) - -mark_as_advanced(LIBSSH_LIBRARIES LIBSSH_INCLUDE_DIR) +mark_as_advanced(LIBSSH_LIBRARIES LIBSSH_LIBRARY LIBSSH_INCLUDE_DIR)