首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将mariadb-connector-c库构建为子模块

将mariadb-connector-c库构建为子模块
EN

Stack Overflow用户
提问于 2020-04-06 02:59:53
回答 1查看 173关注 0票数 0

我正在尝试使用我的项目中的add_subdirectory(external/mariadb-connector-c)将mariadb客户端库构建为一个子模块。当我构建独立的mariadb客户端时,一切都很好,但是这个解决方案意味着我必须直接链接预先构建的二进制文件。我希望避免这种两步构建过程,但当我试图从我的项目中运行cmake时,我得到了许多与mariadb插件相关的错误:

代码语言:javascript
复制
CMake Error at external/mariadb-connector-c/cmake/install_plugins.cmake:11 (INSTALL):
  INSTALL TARGETS given no LIBRARY DESTINATION for module target
  "client_ed25519".
Call Stack (most recent call first):
  external/mariadb-connector-c/cmake/plugins.cmake:82 (INSTALL_PLUGIN)
  external/mariadb-connector-c/plugins/auth/CMakeLists.txt:54 (REGISTER_PLUGIN)
  external/mariadb-connector-c/plugins/CMakeLists.txt:7 (INCLUDE)
  external/mariadb-connector-c/CMakeLists.txt:403 (INCLUDE)

在这里,external/mariadb-connector-c被注册为我的项目存储库中的一个git子模块。有没有办法将mariadb客户端库作为一个子模块嵌入,通过从我的根项目运行CMake来使其工作,或者我必须将其构建为一个独立的项目?

EN

回答 1

Stack Overflow用户

发布于 2020-10-14 15:55:39

它也不适用于我(linux,cmake-3.10)

我必须至少设置SET(INSTALL_PLUGIN x)以避免cmake错误。

下面是我的最小工作示例:

代码语言:javascript
复制
# file CMakeLists.txt
PROJECT(my_connector_info)

SET(INSTALL_PLUGINDIR ${CMAKE_BINARY_DIR}) # needed by mariadb-connector-c
add_subdirectory(libs/mariadb-connector-c-3.1.10-src EXCLUDE_FROM_ALL)

add_executable(${PROJECT_NAME} my_connector_info.c)
target_link_libraries(${PROJECT_NAME} mariadbclient)
target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/libs/mariadb-connector-c-3.1.10-src/include)
target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE ${CMAKE_BINARY_DIR}/libs/mariadb-connector-c-3.1.10-src/include)
代码语言:javascript
复制
/* file my_connector_info.c */
#include <stdio.h>
#include <mysql.h>

int main()
{
    printf("info: %s\n", mysql_get_client_info());    
    return 0; 
}

下面是如何构建它的:

代码语言:javascript
复制
#!/bin/sh
set -eux
(
    mkdir -p libs
    cd libs
    test -e mariadb-connector-c-3.1.10-src.tar.gz || wget https://dlm.mariadb.com/1157459/Connectors/c/connector-c-3.1.10/mariadb-connector-c-3.1.10-src.tar.gz
    test -d mariadb-connector-c-3.1.10-src || tar -xzf mariadb-connector-c-3.1.10-src.tar.gz
    cd -
)
mkdir -p build
cd build
cmake ..
make
./my_connector_info

My_connector_info的输出:

代码语言:javascript
复制
info: 10.5.5
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61047894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档