我正在从事一个需要使用 MySQL LIBRARIES 的项目。我过去取得了成功,使用一个简单的 makefile,在其中编写了特定的标志。
CFLAGS+=`mysql_config --cflags`
LIB+=`mysql_config --libs`
Run Code Online (Sandbox Code Playgroud)
但是...对于我的项目,需要使用 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} )
Run Code Online (Sandbox Code Playgroud)
但对于 MySQL 我遇到了麻烦。我尝试了很多方法都没有成功,但我相信这与 GTK 的例子类似。谁能帮我解决这个问题吗?
最简单的方法可能是找到(例如使用谷歌)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})
Run Code Online (Sandbox Code Playgroud)
(变量名称MYSQL_INCLUDE_DIR和MYSQL_LIB具体脚本可以不同)。
但手动链接 MySQL 库并不困难,只要知道计算 CFLAGS 和 LIBS 的方法即可。
在配置阶段(执行)程序可以使用execute_processcmake运行,为特定目标添加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})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8616 次 |
| 最近记录: |