“CMake”这个名字是“cross platform make”

时间:2021-05-12 19:37:12

cmake_百度百科 https://baike.baidu.com/item/cmake/7138032?fr=aladdin

CMake 可以编译源代码、制作程序库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。CMake 支持 in-place 建构(二进档和源代码在同一个目录树中)和 out-of-place 建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake 也支持静态与动态程式库的建构。
“CMake”这个名字是“cross platform make”的缩写。虽然名字中含有“make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高阶。
 
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。
 
中文名
cmake
外文名
cross platform make
类    型
跨平台的安装(编译)工具
描    述
所有平台的安装(编译过程)
功    能
可以编译源代码、制作程式库

目录

功能

编辑

CMake 可以编译源代码、制作程序库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。CMake 支持 in-place 建构(二进档和源代码在同一个目录树中)和 out-of-place 建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake 也支持静态与动态程式库的建构。
“CMake”这个名字是“cross platform make”的缩写。虽然名字中含有“make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高阶。

历史

编辑

CMake是为了解决美国国家医学图书馆出资的Visible Human Project专案下的Insight Segmentation and Registration Toolkit (ITK) 软件的跨平台建构的需求而创造出来的,其设计受到了Ken Martin开发的pcmaker所影响。pcmaker当初则是为了支持Visualization Toolkit这个开放源代码的三维图形和视觉系统才出现的,今日VTK也采用了CMake。在设计CMake之时,Kitware公司的Bill Hoffman采用了pcmaker的一些重要想法,加上更多他自己的点子,想把GNU建构系统的一些功能整合进来。CMake最初的实作是在2000年中作的,在2001年初有了急速的进展,许多改良是来自其他把CMake整合到自己的系统中的开发者,比方说,采用CMake作为建构环境的VXL社群就贡献了很多重要的功能,Brad King为了支持CABLE和GCC-XML这套自动包装工具也加了几项功能,奇异公司的研发部门则用在内部的测试系统DART,还有一些功能是为了让VTK可以过渡到CMake和支持(“美国Los Alamos国家实验室”&“洛斯阿拉莫斯国家实验室”)的Advanced Computing Lab的平行视觉系统ParaView而加的。

组态档

编辑

组态档是用一种建构软件专用的特殊编程语言写的CMake脚本。
内建C语言、C++、Fortran、Java的自动相依性分析功能。
经由CMake脚本语言支持SWIG、Qt、FLTK。
内建对微软Visual Studio .NET和过去的Visual Studio版本的支持,可以产生后缀为.dsp、.sln和.vcproj的文档。
用传统的时间标签侦测档案内容的改变。
支持平行建构(在多台电脑上同时建构)
在许多操作系统上进行跨平台编译,包括Linux、POSIX相容的系统(AIX、*BSD、HP-UX、IRIX、MinGW/MSYSSolaris系统)、Mac OS X和微软Windows 95/98/NT/2000/XP等。
产生可以给Graphviz用的全局相依图。
已经和Dart、CTest和CPack等软件测试和释出的工具整合。
 
mysql-connector-cpp\jdbc.cmake
 
message("== Configuring legacy connector build using cmake generator: ${CMAKE_GENERATOR}")

if(NOT EXISTS "${PROJECT_SOURCE_DIR}/jdbc/CMakeLists.txt")
message(FATAL_ERROR
"Could not find JDBC API sources at ${PROJECT_SOURCE_DIR}/jdbc."
" Have you updated git sub-modules?"
)
endif() set(JDBC_DIR "${PROJECT_BINARY_DIR}/jdbc") if(FORCE_REBUILD AND EXISTS "${JDBC_DIR}/CMakeCache.txt")
file(REMOVE ${JDBC_DIR}/CMakeCache.txt)
endif()
file(MAKE_DIRECTORY "${JDBC_DIR}") #############################################################################
#
# Configure legacy connector build environment in ${JDBC_DIR}
# if(BUILD_STATIC)
list(APPEND jdbc_cmake_opts -DENABLE_BUILD_STATIC=ON)
else()
list(APPEND jdbc_cmake_opts -DENABLE_BUILD_DYNAMIC=ON)
endif() if(MAINTAINER_MODE)
list(APPEND jdbc_cmake_opts -DENABLE_BUILD_STATIC=ON)
endif() if(MYSQL_DIR)
list(APPEND jdbc_cmake_opts -DMYSQL_DIR=${MYSQL_DIR})
endif() if(MYSQL_CONFIG_EXECUTABLE)
list(APPEND jdbc_cmake_opts -DMYSQL_CONFIG_EXECUTABLE=${MYSQL_CONFIG_EXECUTABLE})
endif() list(APPEND jdbc_cmake_opts -DMYSQLCLIENT_STATIC_LINKING=ON) if(CMAKE_BUILD_TYPE)
if(CMAKE_BUILD_TYPE MATCHES "[Ss][Tt][Aa][Tt][Ii][Cc]")
list(APPEND jdbc_cmake_opts -DCMAKE_BUILD_TYPE=Release)
else()
list(APPEND jdbc_cmake_opts -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
endif()
endif() if(DEFINED STATIC_MSVCRT)
list(APPEND jdbc_cmake_opts -DSTATIC_MSVCRT=${STATIC_MSVCRT})
endif() if(VS)
list(APPEND jdbc_cmake_opts -DVS=${VS})
endif() #
# Find Boost which is required by legacy connector
# include(boost)
list(APPEND jdbc_cmake_opts -DBOOST_ROOT=${BOOST_ROOT}) #
# Generate version info for legacy connector
# configure_file(
"${PROJECT_SOURCE_DIR}/jdbc/VersionInfo.cmake.in"
"${JDBC_DIR}/VersionInfo.cmake"
@ONLY
) # Dirty trick to speed up cmake set up time. file(
COPY "${CMAKE_BINARY_DIR}/CMakeFiles/${CMAKE_VERSION}"
DESTINATION "${JDBC_DIR}/CMakeFiles"
) if(1)
execute_process(
COMMAND ${CMAKE_COMMAND} -Wno-dev
-G "${CMAKE_GENERATOR}"
${jdbc_cmake_opts}
-DCMAKE_INSTALL_PREFIX=${JDBC_DIR}/install
-DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
${PROJECT_SOURCE_DIR}/jdbc
WORKING_DIRECTORY ${JDBC_DIR}
RESULT_VARIABLE jdbc_config
)
endif() if(jdbc_config)
message(FATAL_ERROR "Could not configure legacy connector build: ${jdbc_config}")
endif() #############################################################################
#
# Target build_jdbc which triggers build and installation of the legacy
# connector.
# #
# jdbc.buildstamp
# set(JDBC_BUILD_STAMP "${PROJECT_BINARY_DIR}/jdbc.buildstamp")
file(REMOVE "${JDBC_BUILD_STAMP}")
#message("JDBC_BUILD_STAMP: ${JDBC_BUILD_STAMP}") set(CONFIG_EXPR
$<$<CONFIG:Static>:Release>$<$<NOT:$<CONFIG:Static>>:$<CONFIGURATION>>
) add_custom_command(OUTPUT ${JDBC_BUILD_STAMP} COMMAND ${CMAKE_COMMAND} -E remove_directory install
COMMAND ${CMAKE_COMMAND}
--build . --target install --config ${CONFIG_EXPR} --clean-first # Move installed headers from include/ to include/jdbc and rename lib/
# to lib64/ for 64-bit platform COMMAND ${CMAKE_COMMAND} -E remove_directory install/jdbc
COMMAND ${CMAKE_COMMAND} -E rename install/include install/jdbc
COMMAND ${CMAKE_COMMAND} -E make_directory install/include
COMMAND ${CMAKE_COMMAND} -E copy_directory install/jdbc install/include/jdbc
COMMAND ${CMAKE_COMMAND} -E remove_directory install/jdbc COMMAND ${CMAKE_COMMAND} -E touch ${JDBC_BUILD_STAMP} WORKING_DIRECTORY ${JDBC_DIR}
COMMENT "Building legacy connector library using configuration: $(Configuration)"
) # Collect sources of legacy connector and specify them in the build
# target. unset(jdbc_sources)
foreach(dir driver cppconn thread) file(
GLOB_RECURSE sources
#RELATIVE "${PROJECT_SOURCE_DIR}/jdbc/${dir}"
"${PROJECT_SOURCE_DIR}/jdbc/${dir}/*.cpp"
"${PROJECT_SOURCE_DIR}/jdbc/${dir}/*.h"
"${PROJECT_SOURCE_DIR}/jdbc/${dir}/*.cmake"
"${PROJECT_SOURCE_DIR}/jdbc/${dir}/*.cm"
"${PROJECT_SOURCE_DIR}/jdbc/${dir}/CMakeLists.txt"
) # TODO: Split into Headers/Sources/Other sub-groups source_group(${dir} FILES ${sources}) list(APPEND jdbc_sources ${sources}) endforeach() add_custom_target(build_jdbc ALL
DEPENDS ${JDBC_BUILD_STAMP}
SOURCES ${jdbc_sources}
) #############################################################################
#
# Import legacy connector library so that it can be used by other targets.
# set(JDBC_INCLUDES ${Boost_INCLUDE_DIRS} "${JDBC_DIR}/install/include")
#message("legacy connector includes: ${JDBC_INCLUDES}") #
# Import library targets exported from the legacy connector project.
# include("${JDBC_DIR}/exports.cmake") if(BUILD_STATIC)
set(JDBC_LIB mysqlcppconn-static)
else()
set(JDBC_LIB mysqlcppconn)
endif() add_dependencies(${JDBC_LIB} build_jdbc) set(JDBC_LIBS ${JDBC_LIB} CACHE INTERNAL "legacy connector library") #############################################################################
#
# Installation specs for the legacy connector
# get_target_property(configurations ${JDBC_LIB} IMPORTED_CONFIGURATIONS) foreach(config ${configurations}) get_target_property(location ${JDBC_LIB} IMPORTED_LOCATION_${config})
message("jdbc installing: ${location}") if(config STREQUAL DEBUG)
set(loc "${INSTALL_LIB_DIR}/debug")
set(loc_static "${INSTALL_LIB_DIR_STATIC}/debug")
else()
set(loc "${INSTALL_LIB_DIR}")
set(loc_static "${INSTALL_LIB_DIR_STATIC}")
endif() if(BUILD_STATIC) install(
FILES ${location}
CONFIGURATIONS ${config}
DESTINATION ${loc_static}
COMPONENT JDBCDev
) else() if(WIN32) install(FILES ${location} CONFIGURATIONS ${config} DESTINATION ${loc} COMPONENT JDBCDll) # install import library for the DLL get_target_property(imp_location ${JDBC_LIB} IMPORTED_IMPLIB_${config}) install(
FILES ${imp_location}
CONFIGURATIONS ${config}
DESTINATION ${loc_static}
COMPONENT JDBCDev
) else() # We need to install soname and linkname links together with the shared
# library. get_filename_component(name "${location}" NAME)
get_filename_component(loc_path "${location}" PATH)
get_target_property(soname ${JDBC_LIB} IMPORTED_SONAME_${config})
set(linkname "${CMAKE_SHARED_LIBRARY_PREFIX}mysqlcppconn${CMAKE_SHARED_LIBRARY_SUFFIX}") #
# Warning: Using undocumented file(INSTALL ...) signature which creates
# required symlinks. This command is used in install scripts generated
# by cmake.
# install(CODE
"file(INSTALL
DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${loc}\"
TYPE SHARED_LIBRARY
FILES
\"${location}\"
\"${loc_path}/${soname}\"
\"${loc_path}/${linkname}\"
)"
) endif() endif() endforeach() install(
DIRECTORY ${JDBC_DIR}/install/include/jdbc
DESTINATION ${INSTALL_INCLUDE_DIR}
COMPONENT JDBCDev
) #
# In maintainer mode add specifications for installing the static library
# which is always built in this mode.
# if(MAINTAINER_MODE) add_dependencies(mysqlcppconn-static build_jdbc)
get_target_property(location mysqlcppconn-static IMPORTED_LOCATION_RELEASE)
message("jdbc installing: ${location} (MAINTAINER_MODE)") install(
FILES ${location}
CONFIGURATIONS Static
DESTINATION "${INSTALL_LIB_DIR_STATIC}"
COMPONENT JDBCDev
) endif() #
# Install external dependencies of MySQL client library, such as OpenSSL,
# if bundled with client library installation.
#
# Note: if main connector uses OpenSSL, then we will use the same libraries
# to satisfy client library dependency. But if main connector does not use
# OpenSSL, we copy required dependencies from MySQL installation.
# if(BUNDLE_DEPENDENCIES AND WITH_SSL STREQUAL "bundled") message("Bundling OpenSSL libraries from: ${MYSQL_DIR}") install(DIRECTORY "${MYSQL_DIR}/bin/" DESTINATION lib64
FILES_MATCHING PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}"
COMPONENT JDBCDev
) endif() #############################################################################
#
# Public header checks
# if(WITH_HEADER_CHECKS) # Prepare location where checks will be performed. set(CHECK_DIR "${JDBC_DIR}/headers_check") file(REMOVE_RECURSE "${CHECK_DIR}")
file(MAKE_DIRECTORY "${CHECK_DIR}") # Dirty trick to speed up cmake set up time. file(
COPY "${CMAKE_BINARY_DIR}/CMakeFiles/${CMAKE_VERSION}"
DESTINATION "${CHECK_DIR}/CMakeFiles"
) #
# Target to run header checks.
# ADD_CUSTOM_TARGET(Headers_jdbc
COMMAND ${CMAKE_COMMAND}
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
-DJDBC_DIR=${JDBC_DIR}
-DJDBC_INCLUDES="${JDBC_INCLUDES}"
-DHEADERS_DIR=${PROJECT_SOURCE_DIR}/cdk/cmake/headers
-DCHECK_DIR=${CHECK_DIR}
-P ${PROJECT_SOURCE_DIR}/cmake/jdbc_headers_check.cmake
SOURCES ${all_headers}
) add_dependencies(Headers_jdbc build_jdbc) add_test(NAME Headers_jdbc
COMMAND cmake --build . --target Headers_jdbc
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
)
message(STATUS "Added JDBC public headers test") endif() message("== legacy connector build configured")

  

 
 
 

message("== Configuring legacy connector build using cmake generator: ${CMAKE_GENERATOR}")
if(NOT EXISTS "${PROJECT_SOURCE_DIR}/jdbc/CMakeLists.txt")  message(FATAL_ERROR    "Could not find JDBC API sources at ${PROJECT_SOURCE_DIR}/jdbc."    " Have you updated git sub-modules?"  )endif()
set(JDBC_DIR "${PROJECT_BINARY_DIR}/jdbc")
if(FORCE_REBUILD AND EXISTS "${JDBC_DIR}/CMakeCache.txt")  file(REMOVE ${JDBC_DIR}/CMakeCache.txt)endif()file(MAKE_DIRECTORY "${JDBC_DIR}")

############################################################################### Configure legacy connector build environment in ${JDBC_DIR}#
if(BUILD_STATIC)  list(APPEND jdbc_cmake_opts -DENABLE_BUILD_STATIC=ON)else()  list(APPEND jdbc_cmake_opts -DENABLE_BUILD_DYNAMIC=ON)endif()
if(MAINTAINER_MODE)  list(APPEND jdbc_cmake_opts -DENABLE_BUILD_STATIC=ON)endif()
if(MYSQL_DIR)  list(APPEND jdbc_cmake_opts -DMYSQL_DIR=${MYSQL_DIR})endif()
if(MYSQL_CONFIG_EXECUTABLE)  list(APPEND jdbc_cmake_opts -DMYSQL_CONFIG_EXECUTABLE=${MYSQL_CONFIG_EXECUTABLE})endif()
list(APPEND jdbc_cmake_opts -DMYSQLCLIENT_STATIC_LINKING=ON)
if(CMAKE_BUILD_TYPE)  if(CMAKE_BUILD_TYPE MATCHES "[Ss][Tt][Aa][Tt][Ii][Cc]")    list(APPEND jdbc_cmake_opts -DCMAKE_BUILD_TYPE=Release)  else()    list(APPEND jdbc_cmake_opts -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})  endif()endif()
if(DEFINED STATIC_MSVCRT)  list(APPEND jdbc_cmake_opts -DSTATIC_MSVCRT=${STATIC_MSVCRT})endif()
if(VS)  list(APPEND jdbc_cmake_opts -DVS=${VS})endif()
## Find Boost which is required by legacy connector#
include(boost)list(APPEND jdbc_cmake_opts -DBOOST_ROOT=${BOOST_ROOT})
## Generate version info for legacy connector#
configure_file(  "${PROJECT_SOURCE_DIR}/jdbc/VersionInfo.cmake.in"  "${JDBC_DIR}/VersionInfo.cmake"  @ONLY)
# Dirty trick to speed up cmake set up time.
file(  COPY "${CMAKE_BINARY_DIR}/CMakeFiles/${CMAKE_VERSION}"  DESTINATION "${JDBC_DIR}/CMakeFiles")
if(1)execute_process(  COMMAND ${CMAKE_COMMAND} -Wno-dev          -G "${CMAKE_GENERATOR}"          ${jdbc_cmake_opts}          -DCMAKE_INSTALL_PREFIX=${JDBC_DIR}/install          -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}          -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}          -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}          ${PROJECT_SOURCE_DIR}/jdbc  WORKING_DIRECTORY ${JDBC_DIR}  RESULT_VARIABLE jdbc_config)endif()
if(jdbc_config)  message(FATAL_ERROR "Could not configure legacy connector build: ${jdbc_config}")endif()

############################################################################### Target build_jdbc which triggers build and installation of the legacy# connector.#
##  jdbc.buildstamp#
set(JDBC_BUILD_STAMP "${PROJECT_BINARY_DIR}/jdbc.buildstamp")file(REMOVE "${JDBC_BUILD_STAMP}")#message("JDBC_BUILD_STAMP: ${JDBC_BUILD_STAMP}")
set(CONFIG_EXPR  $<$<CONFIG:Static>:Release>$<$<NOT:$<CONFIG:Static>>:$<CONFIGURATION>>)
add_custom_command(OUTPUT ${JDBC_BUILD_STAMP}
  COMMAND ${CMAKE_COMMAND} -E remove_directory install  COMMAND ${CMAKE_COMMAND}    --build . --target install --config ${CONFIG_EXPR} --clean-first
  # Move installed headers from include/ to include/jdbc and rename lib/  # to lib64/ for 64-bit platform
  COMMAND ${CMAKE_COMMAND} -E remove_directory install/jdbc  COMMAND ${CMAKE_COMMAND} -E rename install/include install/jdbc  COMMAND ${CMAKE_COMMAND} -E make_directory install/include  COMMAND ${CMAKE_COMMAND} -E copy_directory install/jdbc install/include/jdbc  COMMAND ${CMAKE_COMMAND} -E remove_directory install/jdbc
  COMMAND ${CMAKE_COMMAND} -E touch ${JDBC_BUILD_STAMP}
  WORKING_DIRECTORY ${JDBC_DIR}  COMMENT "Building legacy connector library using configuration: $(Configuration)")
# Collect sources of legacy connector and specify them in the build# target.
unset(jdbc_sources)foreach(dir driver cppconn thread)
  file(    GLOB_RECURSE sources    #RELATIVE "${PROJECT_SOURCE_DIR}/jdbc/${dir}"    "${PROJECT_SOURCE_DIR}/jdbc/${dir}/*.cpp"    "${PROJECT_SOURCE_DIR}/jdbc/${dir}/*.h"    "${PROJECT_SOURCE_DIR}/jdbc/${dir}/*.cmake"    "${PROJECT_SOURCE_DIR}/jdbc/${dir}/*.cm"    "${PROJECT_SOURCE_DIR}/jdbc/${dir}/CMakeLists.txt"  )
  # TODO: Split into Headers/Sources/Other sub-groups
  source_group(${dir} FILES ${sources})
  list(APPEND jdbc_sources ${sources})
endforeach()
add_custom_target(build_jdbc ALL  DEPENDS ${JDBC_BUILD_STAMP}  SOURCES ${jdbc_sources})

############################################################################### Import legacy connector library so that it can be used by other targets.#
set(JDBC_INCLUDES ${Boost_INCLUDE_DIRS} "${JDBC_DIR}/install/include")#message("legacy connector includes: ${JDBC_INCLUDES}")
## Import library targets exported from the legacy connector project.#
include("${JDBC_DIR}/exports.cmake")
if(BUILD_STATIC)  set(JDBC_LIB mysqlcppconn-static)else()  set(JDBC_LIB mysqlcppconn)endif()
add_dependencies(${JDBC_LIB} build_jdbc)
set(JDBC_LIBS ${JDBC_LIB} CACHE INTERNAL "legacy connector library")

############################################################################### Installation specs for the legacy connector#
get_target_property(configurations ${JDBC_LIB} IMPORTED_CONFIGURATIONS)
foreach(config ${configurations})
  get_target_property(location ${JDBC_LIB} IMPORTED_LOCATION_${config})  message("jdbc installing: ${location}")
  if(config STREQUAL DEBUG)    set(loc "${INSTALL_LIB_DIR}/debug")    set(loc_static "${INSTALL_LIB_DIR_STATIC}/debug")  else()    set(loc "${INSTALL_LIB_DIR}")    set(loc_static "${INSTALL_LIB_DIR_STATIC}")  endif()
  if(BUILD_STATIC)
    install(      FILES ${location}      CONFIGURATIONS ${config}      DESTINATION ${loc_static}      COMPONENT JDBCDev    )
  else()
    if(WIN32)
      install(FILES ${location} CONFIGURATIONS ${config} DESTINATION ${loc} COMPONENT JDBCDll)
      # install import library for the DLL
      get_target_property(imp_location ${JDBC_LIB} IMPORTED_IMPLIB_${config})
      install(        FILES ${imp_location}        CONFIGURATIONS ${config}        DESTINATION ${loc_static}        COMPONENT JDBCDev      )
    else()
      # We need to install soname and linkname links together with the shared      # library.
      get_filename_component(name "${location}" NAME)      get_filename_component(loc_path "${location}" PATH)      get_target_property(soname ${JDBC_LIB} IMPORTED_SONAME_${config})      set(linkname "${CMAKE_SHARED_LIBRARY_PREFIX}mysqlcppconn${CMAKE_SHARED_LIBRARY_SUFFIX}")
      #      # Warning: Using undocumented file(INSTALL ...) signature which creates      # required symlinks. This command is used in install scripts generated      # by cmake.      #
      install(CODE       "file(INSTALL          DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${loc}\"          TYPE SHARED_LIBRARY          FILES            \"${location}\"            \"${loc_path}/${soname}\"            \"${loc_path}/${linkname}\"       )"      )
    endif()
  endif()
endforeach()

install(  DIRECTORY ${JDBC_DIR}/install/include/jdbc  DESTINATION ${INSTALL_INCLUDE_DIR}  COMPONENT JDBCDev)
## In maintainer mode add specifications for installing the static library# which is always built in this mode.#
if(MAINTAINER_MODE)
  add_dependencies(mysqlcppconn-static build_jdbc)  get_target_property(location mysqlcppconn-static IMPORTED_LOCATION_RELEASE)  message("jdbc installing: ${location} (MAINTAINER_MODE)")
  install(    FILES ${location}    CONFIGURATIONS Static    DESTINATION "${INSTALL_LIB_DIR_STATIC}"    COMPONENT JDBCDev  )
endif()

##  Install external dependencies of MySQL client library, such as OpenSSL,#  if bundled with client library installation.##  Note: if main connector uses OpenSSL, then we will use the same libraries#  to satisfy client library dependency. But if main connector does not use#  OpenSSL, we copy required dependencies from MySQL installation.#
if(BUNDLE_DEPENDENCIES AND WITH_SSL STREQUAL "bundled")
  message("Bundling OpenSSL libraries from: ${MYSQL_DIR}")
  install(DIRECTORY "${MYSQL_DIR}/bin/" DESTINATION lib64    FILES_MATCHING PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}"    COMPONENT JDBCDev  )
endif()
###############################################################################  Public header checks#
if(WITH_HEADER_CHECKS)
  # Prepare location where checks will be performed.
  set(CHECK_DIR "${JDBC_DIR}/headers_check")
  file(REMOVE_RECURSE "${CHECK_DIR}")  file(MAKE_DIRECTORY "${CHECK_DIR}")
  # Dirty trick to speed up cmake set up time.
  file(    COPY "${CMAKE_BINARY_DIR}/CMakeFiles/${CMAKE_VERSION}"    DESTINATION "${CHECK_DIR}/CMakeFiles"  )
  #  # Target to run header checks.  #
  ADD_CUSTOM_TARGET(Headers_jdbc    COMMAND ${CMAKE_COMMAND}      -DCMAKE_GENERATOR=${CMAKE_GENERATOR}      -DJDBC_DIR=${JDBC_DIR}      -DJDBC_INCLUDES="${JDBC_INCLUDES}"      -DHEADERS_DIR=${PROJECT_SOURCE_DIR}/cdk/cmake/headers      -DCHECK_DIR=${CHECK_DIR}      -P ${PROJECT_SOURCE_DIR}/cmake/jdbc_headers_check.cmake    SOURCES ${all_headers}  )
  add_dependencies(Headers_jdbc build_jdbc)

add_test(NAME Headers_jdbc    COMMAND cmake --build . --target Headers_jdbc    WORKING_DIRECTORY ${PROJECT_BINARY_DIR}  )  message(STATUS "Added JDBC public headers test")
endif()
message("== legacy connector build configured")