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

在cmakelist.txt中添加并链接mysql库,mysql,cmake,libraries,Mysql,Cmake,Libraries,我在一个需要使用MySQL库的项目中工作。我在过去取得了成功,使用了一个简单的makefile,在其中我编写了特定的标志 CFLAGS+=`mysql_config --cflags` LIB+=`mysql_config --libs` 然而。。。因为我的项目需要使用cmakelist,我对此有困难。我可以使用以下代码添加GTK库: find_package(PkgConfig REQUIRED) pkg_check_modules(GTK REQUIRED gtk+-3.0) inclu

我在一个需要使用MySQL库的项目中工作。我在过去取得了成功,使用了一个简单的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
script。此脚本可以像往常一样与
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})

最简单的方法可能是找到(例如使用google)适合您的
FindMySQL.cmake
script。此脚本可以像往常一样与
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})

非常感谢你!!!我只需要调整:target_compile_options(cgm${MYSQL_CFLAGS})来设置(CMAKE_C_FLAGS“${CMAKE_C_FLAGS}${GCC_MYSQL_compile_FLAGS}”),它工作得非常好!你帮了我很多@ThomasKettenbach:下一次,在建议编辑代码或文章的其他重要部分之前,请询问文章作者您在评论中的意图。否则,您可能会因为“与作者的意图相冲突”而拒绝您的建议编辑。请注意,建议编辑的重新布线者并不总是非常熟悉该主题。有关编辑他人帖子的更多详细信息,请参阅。@Tsyvarev:谢谢你让我知道,从现在起我会记住这一点。谢谢你接受我的编辑。我的更改是:在目标编译操作中添加了
OUTPUT\u STRIP\u training\u WHITESPACE
以执行\u进程和作用域
PUBLIC
。我已经在centos 7上用mariadb-devel-5.5.56-2.el7进行了测试。我的问题是:mysql_配置工具在末尾添加了一个换行符,cmake 3.4报告这是一个错误。3@ThomasKettenbach:是的,在建议对代码进行编辑之前,这样的注释会很好。即使你没有得到回复(至少等了一天之后),你也可以尝试在任何地方建议编辑:评论者看到评论,可能会发现接受编辑的解释非常合理。至于我的答案和其中的代码,OUTPUT_STRIP_training_WHITESPACE实际上对几乎任何程序的输出都是一个有用的选项,而且与许多其他命令不同,
target_compile_options
实际上需要PUBLIC(或其他)关键字。非常感谢您!!!我只需要调整:target_compile_options(cgm${MYSQL_CFLAGS})来设置(CMAKE_C_FLAGS“${CMAKE_C_FLAGS}${GCC_MYSQL_compile_FLAGS}”),它工作得非常好!你帮了我很多@ThomasKettenbach:下一次,在建议编辑代码或文章的其他重要部分之前,请询问文章作者您在评论中的意图。否则,您可能会因为“与作者的意图相冲突”而拒绝您的建议编辑。请注意,建议编辑的重新布线者并不总是非常熟悉该主题。有关编辑他人帖子的更多详细信息,请参阅。@Tsyvarev:谢谢你让我知道,从现在起我会记住这一点。谢谢你接受我的编辑。我的更改是:在目标编译操作中添加了
OUTPUT\u STRIP\u training\u WHITESPACE
以执行\u进程和作用域
PUBLIC
。我已经在centos 7上用mariadb-devel-5.5.56-2.el7进行了测试。我的问题是:mysql_配置工具在末尾添加了一个换行符,cmake 3.4报告这是一个错误。3@ThomasKettenbach:是的,在建议对代码进行编辑之前,这样的注释会很好。即使你没有得到回复(至少等了一天之后),你也可以尝试在任何地方建议编辑:评论者看到评论,可能会发现接受编辑的解释非常合理。至于我的答案和其中的代码,OUTPUT_STRIP_training_WHITESPACE实际上对几乎任何程序的输出都是一个有用的选项,而且与许多其他命令不同,
target_compile_options
实际上需要PUBLIC(或其他)关键字。