【发布时间】:2023-02-07 22:31:05
【问题描述】:
我正在尝试为使用 libmariadb 的 C++ 应用程序制作一个食谱。在开发过程中,我使用的是 vcpkg,但现在我想使用 Yocto。
这是 application_1.0.0.bb 文件:
# Metadata
SUMMARY = "Customer API Backend"
DESCRIPTION = "Customer API in C++ using gRPC"
# License is closed, no checksum to avoid warnings
LICENSE = "CLOSED"
LIC_FILE_CHKSUM = ""
DEPENDS = "protobuf protobuf-c protobuf-native grpc grpc-native openssl mariadb poco"
SRCREV = "${AUTOREV}"
SRC_URI = "git://git@gitlab.com/software/projects/embedded/application.git;protocol=ssh;branch=master;"
S = "${WORKDIR}/git"
inherit pkgconfig cmake
这是对 Yocto 造成问题的 CMake 部分:
find_package(unofficial-libmariadb CONFIG REQUIRED)
find_package(Poco REQUIRED COMPONENTS Data DataMySQL)
target_link_libraries(database_api
PRIVATE
unofficial::libmariadb
Poco::DataMySQL
)
我在配置步骤 (CMake) 中收到此错误消息:
CMake Error at src/libraries/external_interfaces/database_api/CMakeLists.txt:20 (find_package):
Could not find a package configuration file probided by
"unofficial-libmariadb" with any of the following names:
unofficial-libmariadbConfig.cmake
unofficial-libmariadb-config.cmake
Add the installation prefix of "unofficial-libmariadb" to CMAKE_PREFIX_PATH
or set "unofficial-libmariadb_DIR" to a directory containing one of the
above files. If "unofficial-libmariadb" provides a separate development
package or SDK, be sure it has been installed.
我尝试将 mariadb-native 添加到 bitbake 食谱上的 DEPENDS,但随后我收到此错误消息when configuring mariadb-native`:
CMake Error at /home/oe-core/build/tmp/work/x86_64-linux/mariadb-native/10.7.5-r0/recipe-sysroot-native/usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find GnuTLS (missing: GNUTLS_LIBRARY GNUTLS_INCLUDE_DIR)
(Required is at least version "3.3.24")
Call Stack (most recent call first):
(...)
-- Configuring incomplete, errors occurred!
【问题讨论】:
-
嗯,错误信息很清楚,不是吗?在 mariadb 目标中有一个看起来像这样的调用
find_package(GnuTLS)即它与您在 mariadb 中遇到的问题相同......将其添加为另一个依赖项将是一个好的开始。 -
谢谢你的建议。我试图将它添加到 DEPENDS 中,但它没有改变任何东西。我仍然有同样的错误信息
-
问题是您添加的依赖项的方式和内容是什么。我不是 Yocto 或 BitBake 的专家。但是错误消息非常清楚,因为 CMakeLists.txt 找不到合适的
GnuTLS我会检查 mariadbCMakeLists.txt是否有任何相关的内容(可能是find_library或find_package)并查看了解它如何搜索图书馆。通过修复你将解决你的问题。 -
DEPENDS=不包含 gnutls - 看起来这是来自 libmysql 项目的副本。你真的需要protobuf吗?