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

CFLAGS+=`mysql_config --cflags`
LIB+=`mysql_config --libs`

但是...因为我的项目需要使用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} )

但是对于MySQL来说我很麻烦。我尝试了很多事情都没有成功,但是我相信这与GTK示例相似。谁能帮我解决这个问题?

最佳答案

最简单的方法可能是找到适合您的FindMySQL.cmake脚本(例如,使用Google)。该脚本可以照常与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})

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

但是手动链接MySQL库并不难,因为它知道计算CFLAGS和LIBS的方法。

在配置阶段(执行cmake),可以使用execute_process运行程序,为特定目标添加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})

关于mysql - 在cmakelist.txt中添加和链接mysql库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36092241/

10-13 08:18
查看更多