在 cmakelist.txt 中添加并链接 mysql 库

1 mysql cmake libraries

我正在从事一个需要使用 MySQL LIBRARIES 的项目。我过去取得了成功,使用一个简单的 makefile,在其中编写了特定的标志。

CFLAGS+=`mysql_config --cflags`
LIB+=`mysql_config --libs`
Run Code Online (Sandbox Code Playgroud)

但是...对于我的项目,需要使用 cmakelist,而我对此遇到了困难。我可以使用以下代码添加 GTK 库:

find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK REQUIRED gtk+-3.0)

include_directories(${GTK_INCLUDE_DIRS})
link_directories(${GTK_LIBRARY_DIRS})
target_link_libraries( cgm ${GTK_LIBRARIES} )
Run Code Online (Sandbox Code Playgroud)

但对于 MySQL 我遇到了麻烦。我尝试了很多方法都没有成功,但我相信这与 GTK 的例子类似。谁能帮我解决这个问题吗?

Tsy*_*rev 5

最简单的方法可能是找到(例如使用谷歌)FindMySQL.cmake适合您的脚本。该脚本可以像往常一样与命令一起使用find_package

list(CMAKE_MODULE_PATH APPEND <directory-where-FindMySQL.cmake-exists>)
find_package(MySQL REQUIRED)

include_directories(${MYSQL_INCLUDE_DIR})
target_link_libraries(cgm ${MYSQL_LIB})
Run Code Online (Sandbox Code Playgroud)

(变量名称MYSQL_INCLUDE_DIRMYSQL_LIB具体脚本可以不同)。

但手动链接 MySQL 库并不困难,只要知道计算 CFLAGS 和 LIBS 的方法即可。

在配置阶段(执行)程序可以使用execute_processcmake运行,为特定目标添加CFLAGS和LIBS,相应地使用target_compile_optionstarget_link_libraries

execute_process(COMMAND mysql_config --cflags
    OUTPUT_VARIABLE MYSQL_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND mysql_config --libs
    OUTPUT_VARIABLE MYSQL_LIBS OUTPUT_STRIP_TRAILING_WHITESPACE)

target_compile_options(cgm PUBLIC ${MYSQL_CFLAGS})
target_link_libraries(cgm ${MYSQL_LIBS})
Run Code Online (Sandbox Code Playgroud)