FindPOCO CMAKE 脚本无法找到 MYSQL::client

FindPOCO CMAKE script unable to find MYSQL::client

本文关键字:MYSQL client CMAKE 脚本 FindPOCO      更新时间:2023-10-16

我正在使用CMake构建一个使用PocoDataMySQL库的项目。 我正在使用以下CMakeLists.txt文件:

cmake_minimum_required(VERSION 3.0.0)
project(sqltest VERSION 0.1.0)
set(CMAKE_CXX_STANDARD 17)
find_package(Poco REQUIRED DataMySQL)
include_directories(${Poco_INCLUDE_DIRECTORIES})
add_executable(sqltest main.cpp)
target_link_libraries(sqltest ${Poco_LIBRARIES})

当我尝试使用 CMake 配置项目时,我收到以下错误消息:

[cmake] CMake Error at CMakeLists.txt:9 (add_executable):
[cmake]   Target "sqltest" links to target "MySQL::client" but the target was not
[cmake]   found.  Perhaps a find_package() call is missing for an IMPORTED target, or
[cmake]   an ALIAS target is missing?

我的 CMakeLists.txt 文件中是否缺少某些内容,或者这是 Poco 项目提供的 PocoConfig.cmake 脚本的错误? 我能够毫无问题地构建 Poco 本身。

当我运行mysql_config时,我得到以下输出:

Usage: /usr/bin/mysql_config [OPTIONS]
Compiler: GNU 9.3.0
Options:
--cflags         [-I/usr/include/mysql ]
--cxxflags       [-I/usr/include/mysql ]
--include        [-I/usr/include/mysql]
--libs           [-L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -lrt -lssl -lcrypto -ldl]
--libs_r         [-L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -lrt -lssl -lcrypto -ldl]
--plugindir      [/usr/lib/mysql/plugin]
--socket         [/var/run/mysqld/mysqld.sock]
--port           [0]
--version        [8.0.20]
--variable=VAR   VAR is one of:
pkgincludedir [/usr/include/mysql]
pkglibdir     [/usr/lib/x86_64-linux-gnu]
plugindir     [/usr/lib/mysql/plugin]

我能够通过将FindMySQL.cmake文件从 Poco 源代码树复制到/usr/share/cmake-3.16/Modules并在find_package(Poco REQUIRED DataMySQL)之前包含find_package(MySQL REQUIRED)来解决此问题。

我确实在 Poco GitHub 页面 (https://github.com/pocoproject/poco/issues/3028( 上将此作为一个问题提交,因为根据他们的文档,您所需要的只是引用 Poco 的行。