cmake链接MySQL分析

来源:互联网 发布:linux 多国 语言 查看 编辑:程序博客网 时间:2024/06/06 05:06

下面这份代码,是我从网上找到的添加MySQL头文件和链接文件的CMake代码。

# - Find mysqlclient# Find the native MySQL includes and library##  MYSQL_INCLUDE_DIR - where to find mysql.h, etc.#  MYSQL_LIBRARIES   - List of libraries when using MySQL.#  MYSQL_FOUND       - True if MySQL found.IF (MYSQL_INCLUDE_DIR)  # Already in cache, be silent  SET(MYSQL_FIND_QUIETLY TRUE)ENDIF (MYSQL_INCLUDE_DIR)#从下面那两个路径找mysql.h,将找到的路径放到MYSQL_INCLUDE_DIR这个变量中。FIND_PATH(MYSQL_INCLUDE_DIR mysql.h  /usr/local/include/mysql  /usr/include/mysql)#设置要寻找的链接库的名字,这里应该是找libmysqlclient.soSET(MYSQL_NAMES mysqlclient mysqlclient_r)#将libmysqlclient.so的路径放到MYSQL_LIBRARYFIND_LIBRARY(MYSQL_LIBRARY  NAMES ${MYSQL_NAMES}  PATHS /usr/lib /usr/local/lib  PATH_SUFFIXES mysql)#如果上面找到mysql的头文件和mysql的库文件,就将MYSQL_FOUND设为真IF (MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)  SET(MYSQL_FOUND TRUE)  SET( MYSQL_LIBRARIES ${MYSQL_LIBRARY} )ELSE (MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)  SET(MYSQL_FOUND FALSE)  SET( MYSQL_LIBRARIES )ENDIF (MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)#如果找到并且没有设置QUIET,则输出搜到动态库路径#如果找不到就输出错误信息IF (MYSQL_FOUND)  IF (NOT MYSQL_FIND_QUIETLY)    MESSAGE(STATUS "Found MySQL: ${MYSQL_LIBRARY}")  ENDIF (NOT MYSQL_FIND_QUIETLY)ELSE (MYSQL_FOUND)  IF (MYSQL_FIND_REQUIRED)    MESSAGE(STATUS "Looked for MySQL libraries named ${MYSQL_NAMES}.")    MESSAGE(FATAL_ERROR "Could NOT find MySQL library")  ENDIF (MYSQL_FIND_REQUIRED)ENDIF (MYSQL_FOUND)#将他标记为高级变量,具体什么作用没查到MARK_AS_ADVANCED(  MYSQL_LIBRARY  MYSQL_INCLUDE_DIR  )

我们可以将这份代码写成一个cmake模块,然后通过FIND_PACKAGE(< name>)去得到这个模块的头文件路径和链接库路径,得到的路径一般会存放在< name>_LIBRARIES,< name>_INCLUDE_DIR这两个变量中。
我可以将上面那份代码放到一个新的文件中FindMySQL.cmake,通过在主CMakeLists.txt中SET(CMAKE_MODULE_PATH dir)将其放入工程的某个目录中供工程使用,然后就可以调用FIND_PACKAGE(MySQL)就可以得到mysql的头文件路径和动态链接库路径:MySQL_INCLUDE_DIR, MySQL_LIBRARIES。

0 0
原创粉丝点击