我正在一个需要使用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示例类似。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:2)
最简单的方法是找到(例如使用谷歌)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运行,以便相应地为特定目标使用target_compile_options和target_link_libraries添加CFLAGS和LIBS:
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})