mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-30 18:29:37 -06:00
As we (hopefully) move toward a CPS world, it is helpful for imported targets to use the package name as the namespace (as required by CPS). Modify FindSQLite3 to do so. The old name is retained for compatibility.
132 lines
3.8 KiB
CMake
132 lines
3.8 KiB
CMake
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
# file LICENSE.rst or https://cmake.org/licensing for details.
|
|
|
|
#[=======================================================================[.rst:
|
|
FindSQLite3
|
|
-----------
|
|
|
|
.. versionadded:: 3.14
|
|
|
|
Finds the SQLite 3 library:
|
|
|
|
.. code-block:: cmake
|
|
|
|
find_package(SQLite3 [<version>] [...])
|
|
|
|
SQLite is a small, fast, self-contained, high-reliability, and full-featured
|
|
SQL database engine written in C, intended for embedding in applications.
|
|
|
|
Imported Targets
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
This module provides the following :ref:`Imported Targets`:
|
|
|
|
``SQLite3::SQLite3``
|
|
Target encapsulating SQLite library usage requirements. It is available only
|
|
when SQLite is found.
|
|
|
|
.. versionadded:: 4.3
|
|
|
|
``SQLite::SQLite3``
|
|
Deprecated. Identical to ``SQLite3::SQLite3``.
|
|
|
|
If your project needs to support CMake < 4.3, consider adding the following
|
|
to your project after calling ``find_package(SQLite3 ...)``:
|
|
|
|
.. code-block:: cmake
|
|
|
|
if(NOT TARGET SQLite3::SQLite3) # CMake < 4.3
|
|
add_library(SQLite3::SQLite3 ALIAS SQLite::SQLite3)
|
|
endif()
|
|
|
|
This will allow your project to use the new name while still permitting it to
|
|
compile with older versions of CMake.
|
|
|
|
Result Variables
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
This module defines the following variables:
|
|
|
|
``SQLite3_FOUND``
|
|
Boolean indicating whether the (requested version of) SQLite library was
|
|
found.
|
|
|
|
``SQLite3_VERSION``
|
|
The version of SQLite library found.
|
|
|
|
``SQLite3_INCLUDE_DIRS``
|
|
Include directories containing the ``<sqlite3.h>`` and related headers
|
|
needed to use SQLite.
|
|
|
|
``SQLite3_LIBRARIES``
|
|
Libraries needed to link against to use SQLite.
|
|
|
|
Examples
|
|
^^^^^^^^
|
|
|
|
Finding the SQLite library and linking it to a project target:
|
|
|
|
.. code-block:: cmake
|
|
|
|
find_package(SQLite3)
|
|
target_link_libraries(project_target PRIVATE SQLite::SQLite3)
|
|
#]=======================================================================]
|
|
|
|
cmake_policy(PUSH)
|
|
cmake_policy(SET CMP0159 NEW) # file(STRINGS) with REGEX updates CMAKE_MATCH_<n>
|
|
|
|
find_package(PkgConfig QUIET)
|
|
if(PkgConfig_FOUND)
|
|
pkg_check_modules(PC_SQLite3 QUIET sqlite3)
|
|
endif()
|
|
|
|
# Look for the necessary header
|
|
find_path(SQLite3_INCLUDE_DIR NAMES sqlite3.h
|
|
HINTS
|
|
${PC_SQLite3_INCLUDE_DIRS}
|
|
)
|
|
mark_as_advanced(SQLite3_INCLUDE_DIR)
|
|
|
|
# Look for the necessary library
|
|
find_library(SQLite3_LIBRARY NAMES sqlite3 sqlite
|
|
HINTS
|
|
${PC_SQLite3_LIBRARY_DIRS}
|
|
)
|
|
mark_as_advanced(SQLite3_LIBRARY)
|
|
|
|
# Extract version information from the header file
|
|
if(SQLite3_INCLUDE_DIR)
|
|
file(STRINGS ${SQLite3_INCLUDE_DIR}/sqlite3.h _ver_line
|
|
REGEX "^#define SQLITE_VERSION *\"[0-9]+\\.[0-9]+\\.[0-9]+\""
|
|
LIMIT_COUNT 1)
|
|
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+"
|
|
SQLite3_VERSION "${_ver_line}")
|
|
unset(_ver_line)
|
|
endif()
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(SQLite3
|
|
REQUIRED_VARS SQLite3_LIBRARY SQLite3_INCLUDE_DIR
|
|
VERSION_VAR SQLite3_VERSION)
|
|
|
|
# Create the imported target
|
|
if(SQLite3_FOUND)
|
|
set(SQLite3_INCLUDE_DIRS ${SQLite3_INCLUDE_DIR})
|
|
set(SQLite3_LIBRARIES ${SQLite3_LIBRARY})
|
|
if(NOT TARGET SQLite3::SQLite3)
|
|
add_library(SQLite3::SQLite3 UNKNOWN IMPORTED)
|
|
set_target_properties(SQLite3::SQLite3 PROPERTIES
|
|
IMPORTED_LOCATION "${SQLite3_LIBRARY}"
|
|
INTERFACE_INCLUDE_DIRECTORIES "${SQLite3_INCLUDE_DIR}")
|
|
endif()
|
|
if(NOT TARGET SQLite::SQLite3)
|
|
add_library(SQLite::SQLite3 UNKNOWN IMPORTED)
|
|
set_target_properties(SQLite::SQLite3 PROPERTIES
|
|
IMPORTED_LOCATION "${SQLite3_LIBRARY}"
|
|
INTERFACE_INCLUDE_DIRECTORIES "${SQLite3_INCLUDE_DIR}"
|
|
DEPRECATION "The target name SQLite::SQLite3 is deprecated. Please use SQLite3::SQLite3 instead.")
|
|
endif()
|
|
endif()
|
|
|
|
cmake_policy(POP)
|