我正在一个需要使用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_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})
关于mysql - 在cmakelist.txt中添加和链接mysql库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36092241/