mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-14 02:08:27 +08:00
FindPostgreSQL: Add server component
Require the server-specific artifacts only if the Server component is requested. Issue: #17223
This commit is contained in:
@@ -30,6 +30,16 @@ This module will set the following variables in your project:
|
||||
the link directories for PostgreSQL libraries
|
||||
``PostgreSQL_VERSION_STRING``
|
||||
the version of PostgreSQL found
|
||||
``PostgreSQL_TYPE_INCLUDE_DIR``
|
||||
the directories of the PostgreSQL server headers
|
||||
|
||||
Components
|
||||
^^^^^^^^^^
|
||||
|
||||
This module contains additional ``Server`` component, that forcibly checks
|
||||
for the presence of server headers. Note that ``PostgreSQL_TYPE_INCLUDE_DIR``
|
||||
is set regardless of the presence of the ``Server`` component in find_package call.
|
||||
|
||||
#]=======================================================================]
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
@@ -81,6 +91,9 @@ This module will set the following variables in your project:
|
||||
#
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
cmake_policy(PUSH)
|
||||
cmake_policy(SET CMP0057 NEW) # if IN_LIST
|
||||
|
||||
set(PostgreSQL_INCLUDE_PATH_DESCRIPTION "top-level directory containing the PostgreSQL include directories. E.g /usr/local/include/PostgreSQL/8.4 or C:/Program Files/PostgreSQL/8.4/include")
|
||||
set(PostgreSQL_INCLUDE_DIR_MESSAGE "Set the PostgreSQL_INCLUDE_DIR cmake cache entry to the ${PostgreSQL_INCLUDE_PATH_DESCRIPTION}")
|
||||
set(PostgreSQL_LIBRARY_PATH_DESCRIPTION "top-level directory containing the PostgreSQL libraries.")
|
||||
@@ -244,10 +257,18 @@ if (PostgreSQL_INCLUDE_DIR)
|
||||
unset(pgsql_version_str)
|
||||
endif()
|
||||
|
||||
if("Server" IN_LIST PostgreSQL_FIND_COMPONENTS)
|
||||
set(PostgreSQL_Server_FOUND TRUE)
|
||||
if(NOT PostgreSQL_TYPE_INCLUDE_DIR)
|
||||
set(PostgreSQL_Server_FOUND FALSE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Did we find anything?
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
|
||||
find_package_handle_standard_args(PostgreSQL
|
||||
REQUIRED_VARS PostgreSQL_LIBRARY PostgreSQL_INCLUDE_DIR
|
||||
HANDLE_COMPONENTS
|
||||
VERSION_VAR PostgreSQL_VERSION_STRING)
|
||||
set(PostgreSQL_FOUND ${POSTGRESQL_FOUND})
|
||||
|
||||
@@ -275,7 +296,7 @@ if(PostgreSQL_FOUND)
|
||||
if(PostgreSQL_TYPE_INCLUDE_DIR)
|
||||
list(APPEND PostgreSQL_INCLUDE_DIRS ${PostgreSQL_TYPE_INCLUDE_DIR})
|
||||
endif()
|
||||
set(PostgreSQL_LIBRARY_DIRS ${PostgreSQL_LIBRARY_DIR} )
|
||||
set(PostgreSQL_LIBRARY_DIRS ${PostgreSQL_LIBRARY_DIR})
|
||||
if (NOT TARGET PostgreSQL::PostgreSQL)
|
||||
add_library(PostgreSQL::PostgreSQL UNKNOWN IMPORTED)
|
||||
set_target_properties(PostgreSQL::PostgreSQL PROPERTIES
|
||||
@@ -287,3 +308,5 @@ if(PostgreSQL_FOUND)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(PostgreSQL_INCLUDE_DIR PostgreSQL_TYPE_INCLUDE_DIR)
|
||||
|
||||
cmake_policy(POP)
|
||||
|
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.10)
|
||||
project(TestFindPostgreSQL C)
|
||||
include(CTest)
|
||||
|
||||
find_package(PostgreSQL REQUIRED)
|
||||
find_package(PostgreSQL REQUIRED COMPONENTS Server)
|
||||
|
||||
add_definitions(-DCMAKE_EXPECTED_POSTGRESQL_VERSION="${PostgreSQL_VERSION_STRING}")
|
||||
|
||||
|
Reference in New Issue
Block a user