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


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

  • 相关阅读:
    跟我一起在Win10中用VMware安装Ubuntu
    跟我一起安装vmware
    关于vue项目报错:this relative module was not found
    【error】vue-style-loader didn't discriminate between server and client
    [Vue warn]: Error in beforeCreate hook: "Error: Cannot find module './index.vue?vue&type=style&index=0&lang=scss&'"
    JavaScript数据可视化编程书籍上面的例子(flotr2)
    ExecuteNonQuery和ExecuteScalar的区别
    Datatable添加数据,提示该行已经属于另一个表的解决方法
    利用反射动态调用类成员
    c#用picturebox显示多页TIF
  • 原文地址:https://www.cnblogs.com/rsapaper/p/9847672.html
Copyright © 2020-2023  润新知