mirror of
https://github.com/pocoproject/poco.git
synced 2025-10-25 18:22:59 +02:00
CMake improve find third-party libraries (#2478)
* Improve find thirdparty cmake module. Cleanup cmake build system * Add additional settings for thirdparty paths and fix windows build * Improve cmake getting started doc * Fix postgresql build * Add additional path for odbc windows kits
This commit is contained in:
committed by
GitHub
parent
0dbb8979d0
commit
e624b3315c
@@ -1,30 +1,51 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
#.rst:
|
||||
# FindMySQL
|
||||
# -------
|
||||
#
|
||||
# Find MySQL Runtime
|
||||
#
|
||||
# This will define the following variables::
|
||||
#
|
||||
# MYSQL_FOUND - True if the system has the libraries
|
||||
# MYSQL_INCLUDE_DIRS - where to find the headers
|
||||
# MYSQL_LIBRARIES - where to find the libraries
|
||||
# MYSQL_DEFINITIONS - compile definitons
|
||||
#
|
||||
# Hints:
|
||||
# Set ``MYSQL_ROOT_DIR`` to the root directory of an installation.
|
||||
#
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
find_package(PkgConfig QUIET)
|
||||
pkg_check_modules(PC_MYSQL QUIET mysqlclient)
|
||||
pkg_check_modules(PC_MARIADB QUIET mariadb)
|
||||
|
||||
SET(BINDIR32_ENV_NAME "ProgramFiles(x86)")
|
||||
SET(BINDIR32 $ENV{${BINDIR32_ENV_NAME}})
|
||||
|
||||
find_path(MYSQL_INCLUDE_DIR mysql.h
|
||||
/usr/include/mysql
|
||||
/usr/local/include/mysql
|
||||
HINTS
|
||||
${MYSQL_ROOT_DIR}/include
|
||||
${MYSQL_ROOT_INCLUDE_DIRS}
|
||||
PATHS
|
||||
${PC_MYSQL_INCLUDE_DIRS}
|
||||
${PC_MARIADB_INCLUDE_DIRS}
|
||||
/usr/include
|
||||
/usr/local/include
|
||||
/opt/mysql/mysql/include
|
||||
/opt/mysql/mysql/include/mysql
|
||||
/usr/local/mysql/include
|
||||
/usr/local/mysql/include/mysql
|
||||
$ENV{MYSQL_INCLUDE_DIR}
|
||||
$ENV{MYSQL_DIR}/include
|
||||
$ENV{ProgramFiles}/MySQL/*/include
|
||||
${BINDIR32}/MySQL/include
|
||||
$ENV{SystemDrive}/MySQL/*/include)
|
||||
|
||||
if (NOT MYSQL_INCLUDE_DIR)
|
||||
find_path(MARIADB_INCLUDE_DIR mysql.h
|
||||
/usr/include/mariadb
|
||||
/usr/local/include/mariadb
|
||||
/opt/mariadb/mariadb/include
|
||||
/opt/mariadb/mariadb/include/mariadb
|
||||
/usr/local/mariadb/include
|
||||
/usr/local/mariadb/include/mariadb
|
||||
$ENV{MARIADB_INCLUDE_DIR}
|
||||
$ENV{MARIADB_DIR}/include)
|
||||
endif (NOT MYSQL_INCLUDE_DIR)
|
||||
$ENV{SystemDrive}/MySQL/*/include
|
||||
PATH_SUFFIXES
|
||||
mysql
|
||||
mariadb
|
||||
)
|
||||
|
||||
if (WIN32)
|
||||
if (CMAKE_BUILD_TYPE STREQUAL Debug)
|
||||
@@ -33,62 +54,69 @@ if (WIN32)
|
||||
else (CMAKE_BUILD_TYPE STREQUAL Debug)
|
||||
set(libsuffixDist opt)
|
||||
set(libsuffixBuild Release)
|
||||
add_definitions(-DDBUG_OFF)
|
||||
set(WIN_MYSQL_DEFINITONS " -DDBUG_OFF")
|
||||
endif (CMAKE_BUILD_TYPE STREQUAL Debug)
|
||||
|
||||
find_library(MYSQL_LIB NAMES mysqlclient
|
||||
find_library(MYSQL_LIBRARY NAMES mysqlclient
|
||||
HINTS
|
||||
${MYSQL_ROOT_DIR}/lib/${libsuffixDist}
|
||||
${MYSQL_ROOT_LIBRARY_DIRS}
|
||||
PATHS
|
||||
$ENV{MYSQL_DIR}/lib/${libsuffixDist}
|
||||
$ENV{MYSQL_DIR}/libmysql/${libsuffixBuild}
|
||||
$ENV{MYSQL_DIR}/client/${libsuffixBuild}
|
||||
$ENV{ProgramFiles}/MySQL/*/lib/${libsuffixDist}
|
||||
${BINDIR32}/MySQL/lib
|
||||
$ENV{SystemDrive}/MySQL/*/lib/${libsuffixDist})
|
||||
else (WIN32)
|
||||
find_library(MYSQL_LIB NAMES mysqlclient mysqlclient_r
|
||||
${PC_MYSQL_LIBRARY_DIRS}
|
||||
${PC_MARIADB_LIBRARY_DIRS}
|
||||
$ENV{MYSQL_DIR}/lib/${libsuffixDist}
|
||||
$ENV{MYSQL_DIR}/libmysql/${libsuffixBuild}
|
||||
$ENV{MYSQL_DIR}/client/${libsuffixBuild}
|
||||
$ENV{ProgramFiles}/MySQL/*/lib/${libsuffixDist}
|
||||
${BINDIR32}/MySQL/lib
|
||||
$ENV{SystemDrive}/MySQL/*/lib/${libsuffixDist}
|
||||
)
|
||||
else()
|
||||
find_library(MYSQL_LIBRARY NAMES mysqlclient mysqlclient_r mariadbclient
|
||||
HINTS
|
||||
${MYSQL_ROOT_DIR}/lib
|
||||
${MYSQL_ROOT_LIBRARY_DIRS}
|
||||
PATHS
|
||||
/usr/lib/mysql
|
||||
/usr/local/lib/mysql
|
||||
/usr/local/mysql/lib
|
||||
/usr/local/mysql/lib/mysql
|
||||
/opt/mysql/mysql/lib
|
||||
/opt/mysql/mysql/lib/mysql
|
||||
$ENV{MYSQL_DIR}/libmysql_r/.libs
|
||||
$ENV{MYSQL_DIR}/lib
|
||||
$ENV{MYSQL_DIR}/lib/mysql)
|
||||
${PC_MYSQL_LIBRARY_DIRS}
|
||||
${PC_MARIADB_LIBRARY_DIRS}
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
/usr/local/mysql/lib
|
||||
/opt/mysql/mysql/lib
|
||||
$ENV{MYSQL_DIR}/libmysql_r/.libs
|
||||
$ENV{MYSQL_DIR}/lib
|
||||
PATH_SUFFIXES
|
||||
mysql
|
||||
mariadb
|
||||
)
|
||||
endif()
|
||||
|
||||
if (NOT MYSQL_LIB)
|
||||
find_library(MARIADB_LIB NAMES mariadbclient
|
||||
PATHS
|
||||
/usr/lib/mariadb
|
||||
/usr/local/lib/mariadb
|
||||
/usr/local/mariadb/lib
|
||||
/usr/local/mariadb/lib/mariadb
|
||||
/opt/mariadb/mariadb/lib
|
||||
/opt/mariadb/mariadb/lib/mariadb
|
||||
$ENV{MARIADB_DIR}/libmariadb/.libs
|
||||
$ENV{MARIADB_DIR}/lib
|
||||
$ENV{MARIADB_DIR}/lib/mariadb)
|
||||
endif (NOT MYSQL_LIB)
|
||||
endif (WIN32)
|
||||
set(MYSQL_VERSION ${PC_MYSQL_VERSION})
|
||||
|
||||
if (MYSQL_INCLUDE_DIR AND MYSQL_LIB)
|
||||
get_filename_component(MYSQL_LIB_DIR ${MYSQL_LIB} PATH)
|
||||
set(MYSQL_FOUND TRUE)
|
||||
message(STATUS "Found MySQL Include directory: ${MYSQL_INCLUDE_DIR} library directory: ${MYSQL_LIB_DIR}")
|
||||
include_directories(${MYSQL_INCLUDE_DIR})
|
||||
link_directories(${MYSQL_LIB_DIR})
|
||||
elseif((MARIADB_INCLUDE_DIR OR MYSQL_INCLUDE_DIR) AND MARIADB_LIB)
|
||||
get_filename_component(MYSQL_LIB_DIR ${MARIADB_LIB} PATH)
|
||||
set(MYSQL_FOUND TRUE)
|
||||
set(MYSQL_LIB ${MARIADB_LIB})
|
||||
if(MARIADB_INCLUDE_DIR)
|
||||
set(MYSQL_INCLUDE_DIR ${MARIADB_INCLUDE_DIR})
|
||||
endif(MARIADB_INCLUDE_DIR)
|
||||
message(STATUS "Found MariaDB Include directory: ${MYSQL_INCLUDE_DIR} library directory: ${MYSQL_LIB_DIR}")
|
||||
message(STATUS "Use MariaDB for MySQL Support")
|
||||
include_directories(${MYSQL_INCLUDE_DIR} )
|
||||
link_directories(${MYSQL_LIB_DIR})
|
||||
else ((MARIADB_INCLUDE_DIR OR MYSQL_INCLUDE_DIR) AND MARIADB_LIB)
|
||||
message(STATUS "Couldn't find MySQL or MariaDB")
|
||||
endif (MYSQL_INCLUDE_DIR AND MYSQL_LIB)
|
||||
find_package_handle_standard_args(MYSQL
|
||||
FOUND_VAR MYSQL_FOUND
|
||||
REQUIRED_VARS
|
||||
MYSQL_INCLUDE_DIR
|
||||
MYSQL_LIBRARY
|
||||
VERSION_VAR MYSQL_VERSION
|
||||
)
|
||||
|
||||
if(MYSQL_FOUND)
|
||||
set(MYSQL_LIBRARIES ${MYSQL_LIBRARY})
|
||||
set(MYSQL_INCLUDE_DIRS ${MYSQL_INCLUDE_DIR})
|
||||
set(MYSQL_DEFINITIONS "${PC_MYSQL_CFLAGS_OTHER}${WIN_MYSQL_DEFINITONS}")
|
||||
endif()
|
||||
|
||||
if(MYSQL_FOUND AND NOT TARGET MySQL::client)
|
||||
add_library(MySQL::client UNKNOWN IMPORTED)
|
||||
set_target_properties(MySQL::client PROPERTIES
|
||||
IMPORTED_LOCATION "${MYSQL_LIBRARY}"
|
||||
INTERFACE_COMPILE_OPTIONS "${PC_MYSQL_CFLAGS_OTHER}${WIN_MYSQL_DEFINITONS}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${MYSQL_INCLUDE_DIR}"
|
||||
)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(
|
||||
MYSQL_LIBRARY
|
||||
MYSQL_INCLUDE_DIR
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user