CMakeLists.txt 引用 mysql connector c++ libmysqlcppconn8 库

Note: 这个文章接上一个 mysql connector c++ 环境配置的文章,这里用的路径都是上篇文章用到的,
如果你的跟我的不一样,则需要替换为自己的路径

创建一个 Mysqlcppconn8.cmake , 内容如下:

find_package(OpenSSL)
if(OPENSSL_FOUND)
  message(STATUS "OPENSSL_VERSION = ${OPENSSL_VERSION}")
  message(STATUS "OPENSSL_SSL_LIBRARY = ${OPENSSL_SSL_LIBRARY}")
  message(STATUS "OPENSSL_CRYPTO_LIBRARY = ${OPENSSL_CRYPTO_LIBRARY}")
endif()

set(CONCPP_LIB_DIR "/usr/local/lib64")
set(CONCPP_INCLUDE_DIR "/usr/local/include")

set(find_name mysqlcppconn8)
set(find_dir "${CONCPP_LIB_DIR}")

find_library(CONCPP_LIB
  NAMES ${find_name}
  PATHS "${find_dir}"
  NO_DEFAULT_PATH
)

find_library(CONCPP_LIB_DEBUG
  NAMES ${find_name}
  PATHS "${find_dir}"
  NO_DEFAULT_PATH
)

if(NOT CONCPP_LIB AND NOT CONCPP_LIB_DEBUG)
  message(FATAL_ERROR
    "Could not find Connector/C++ libraries at: ${find_dir}"
  )
endif()

message(STATUS "Using connector lib at: ${CONCPP_LIB}")

# Define imported target for the connector library.

add_library(MySQL::conncpp STATIC IMPORTED)

set_target_properties(MySQL::conncpp PROPERTIES
  INTERFACE_INCLUDE_DIRECTORIES    "${CONCPP_INCLUDE_DIR}"
  IMPORTED_LOCATION                "${CONCPP_LIB}"
  IMPORTED_LOCATION_DEBUG          "${CONCPP_LIB_DEBUG}"
)

# We need to link with libraries on which connector depends
# (however, no need to do it on Windows)

if(NOT WIN32)
  # Connector/C++ requires these libraries on Unix
  if (NOT APPLE)
    set_property(TARGET MySQL::conncpp
      APPEND PROPERTY INTERFACE_LINK_LIBRARIES pthread # rt
    )
  endif()

  # If connector uses OpenSSL libraries, we need to link to them too.
  if(OPENSSL_FOUND)
    set_property(TARGET MySQL::conncpp
      APPEND PROPERTY INTERFACE_LINK_LIBRARIES
      ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY}
    )
  endif()

  if(NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
    # Connector needs to Link with libresolv
    set_property(TARGET MySQL::conncpp
      APPEND PROPERTY INTERFACE_LINK_LIBRARIES resolv
    )
  endif()
endif()

# To use DevAPI we must enable C++11
# Use clang's native C++ runtime library to match the one used
# by Connector/C++.
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
endif()

# When linking with static library, this macro must be defined.
if(BUILD_STATIC)
  add_definitions(-DSTATIC_CONCPP)
endif()

之后在 CMakeLists.txt 中引用即可:

include(${CMAKE_SOURCE_DIR}/cmake/FindMysqlcppconn8.cmake)

include_directories(
  ${CONCPP_INCLUDE_DIR}
)

target_link_libraries(test MySQL::conncpp)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章