CMake中使用find_pakage来使用MySQL

一般来说,如果我们在C++程序中要使用mysql的库,最简单的就是

1
g++ server.cpp -o server -lmysqlclient

但要是在大一点的项目中,在数不清的源文件下使用g++命令来完成,怕是不太现实。

通常使用的工具为CMake,用其来构建项目,但它又没有包管理功能,对于我们想要使用的库,需要在 CMakeLists.txt 中引入。

引用的方式我这里选择 find_pakage (其概述和使用方法这里就不过多赘述了)

1
2
3
4
5
6
7
8
9
10
11
set(CMAKE_MODULE_PATH /usr/share/cmake/Modules)

find_package(MySQL REQUIRED)

add_executable(server ${src_list})

if(MYSQL_FOUND)
target_link_libraries(server ${MYSQL_LIBRARIES})
else(MYSQL_FOUND)
message(FATAL_ERROR "MySQL library not found")
endif(CURL_FOUND)

对上面的代码做一下解释:

  1. 首先设置一下cmake module的路径,其实就是存放.cmake文件的位置。有时候看一些项目,会发现其根目录下会有一个cmake目录,诶,没错,就和这个一样
  2. 使用find_package来引入依赖库
  3. 添加可执行程序server
  4. 如果使用find_package找到了MySQL库,则将其链接到server上,否则终止构建

值得注意的是,在CMAKE_MODULE_PATH目录下,必须有Find<LibaryName>.cmake 模块,在本例中,即为 FindMySQL.cmake,该文件可在网上找到。