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)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值