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

“CMake”这个名字是“cross platform make”的更多相关文章

  1. Comparing Xamarin and Delphi XE5 to Xcode for Cross Platform Mobile App Development

    Comparing Xamarin and Delphi XE5 to Xcode for Cross Platform Mobile App Development If you are consi ...

  2. V4 Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (Doc ID 2471245.1)

    V4 Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (Doc ID 2471245. ...

  3. Gtest:Using visual studio 2017 cross platform feature to compile code remotely

    参考:使用Visual Studio 2017作为Linux C++开发工具 前言 最近在学Gtest单元测试框架,由于平时都是使用Source Insight写代码,遇到问题自己还是要到Linux下 ...

  4. Cross Platform Note: STD C++ Preprocessor directives & pre-defined macros

    ref: http://www.cplusplus.com/doc/tutorial/preprocessor/ concolusion: directives: #define #undef #in ...

  5. Cross platform

    值得学习的C/C++语言开源项目 (1)ACE 庞大.复杂,适合大型项目.开源.免费,不依赖第三方库,支持跨平台. http://www.cs.wustl.edu/~schmidt/ACE.html ...

  6. Cross platform GUI for creating SSL certs with OpenSSL

    Someone said: from : https://micksmix.wordpress.com/2012/08/09/xca-cross-platform-gui-for-creating-s ...

  7. 非常陌生的cmake

    CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的 ...

  8. CMake编译linux C++

    CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的 ...

  9. centos 6.5下cmake工具的安装与配置

    一.cmake是什么? CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C+ ...

随机推荐

  1. cmd隐藏指定文件

    隐藏文件: 或者带路径执行: 显示文件:

  2. Atom打开报错:"Cannot load the system dictionary for zh-CN"

    1. 问题描述 最近每次使用atom打开文件,总是报错"Cannot load the system dictionary for zh-CN" 2. 解决方法 File --&g ...

  3. visual studio 2017发布dotnet core到docker

    docker的好处不用多说,有不了解的可移步<docker入门>,作为一个.net方面的老鸟也想早点搭上docker末班车,减少布署中的各种坑.以下我是在Visual Studio 201 ...

  4. PHP中获取当前页面的完整URL & php $_SERVER中的SERVER_NAME 和HTTP_HOST的区别

    #测试网址:     http://localhost/blog/testurl.php?id=5 //获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<b ...

  5. FPGA大公司面试笔试数电部分,看看你会多少

    1:什么是同步逻辑和异步逻辑?(汉王) 同步逻辑是时钟之间有固定的因果关系.异步逻辑是各时钟之间没有固定的因果关系. 答案应该与上面问题一致 [补充]:同步时序逻辑电路的特点:各触发器的时钟端全部连接 ...

  6. oracle中exists 和 in 的区别

    1)用IN select * from A where id in(select id from B); 以上查询使用了in语句,in()只执行一次,它查出B表中的所有id字段并缓存起来.注意,是缓存 ...

  7. springmvc-servlet.xml

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  8. HTML5 的位置

    HTML5 的位置 在HTML5COL学院的前面几个章节中我们已经对HTML5 Geolocation API有了一定认识,接下来我们要对位置做些更有意思的处理:看看你与我们HTML5COL学院的办公 ...

  9. Unknown module(s) in QT: xlsx解决方法

    解决方法在此: https://github.com/dbzhang800/QtXlsxWriter Documentation: http://qtxlsx.debao.me QtXlsx is a ...

  10. nginx php-fpm启用慢日志slowlog

    php-fpm慢日志slowlog设置可以让我们很好的看见哪些php进程速度太慢而导致的网站问题. 可以让我们方便的找到问题的所在.  代码如下 1 vi /data1/server/php-cgi/ ...