我在一个需要使用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的例子。有人能帮我解决这个问题吗?
最佳答案
最简单的方法可能是找到(例如使用google)适合您的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})
(变量名
MYSQL_INCLUDE_DIR
和MYSQL_LIB
可能因具体脚本而异)。但是手动链接MySQL库并不困难,知道计算CFLAGS和LIBS的方法。
在配置阶段(执行
cmake
)可以使用execute_process运行程序,相应地添加CFLAGS和LIBS以用于特定目标target_compile_options和target_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})