1
0
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:
Alexey Edelev
2021-01-12 11:58:44 +01:00
committed by Brad King
parent 6b50b8d947
commit 8b066f1a65
2 changed files with 25 additions and 2 deletions

View File

@@ -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)

View File

@@ -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}")