使用 CMake 测试 MariaDB 共享库

Testing the MariaDB shared library using CMake

本文关键字:共享 MariaDB 测试 CMake 使用      更新时间:2023-10-16

我已经从源代码(带有WITH_EMBEDDED_SERVER标志)构建了MariaDB 10.0.15,并希望使用一个简单的程序测试其共享库。我是CMake的初学者。

我的程序如下:

#include <my_global.h>
#include <mysql.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
    MYSQL *con = mysql_init(NULL);
    if (con == NULL)
    {
        fprintf(stderr, "%sn", mysql_error(con));
        exit(1);
    }
    if (mysql_real_connect(con, "localhost", "root", "root_pswd",
            NULL, 0, NULL, 0) == NULL)
    {
        fprintf(stderr, "%sn", mysql_error(con));
        mysql_close(con);
        exit(1);
    }
    if (mysql_query(con, "CREATE DATABASE testdb"))
    {
        fprintf(stderr, "%sn", mysql_error(con));
        mysql_close(con);
        exit(1);
    }
    mysql_close(con);
    exit(0);
}

我创建了以下CMakeLists.txt文件:

cmake_minimum_required(VERSION 2.8.4)
project(mariadb_simple_test)
add_subdirectory(/usr/src/mariadb-10.0.15/libmysqld mariadb)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
add_executable(mariadb_simple_test ${SOURCE_FILES})

这是这样做的好方法吗?在尝试构建它时,CMake 抱怨以下错误:未知的 CMake 命令"ADD_CONVENIENCE_LIBRARY",这让我觉得某些 CMake 模块可能丢失了,但为什么呢?

add_subdirectory无效,因为add_subdirectory用于获取其他 CMakeLists.txt 文件

您应该设置编译器包含文件夹,这应该是已编译的mariadb的安装文件夹:

include_directories("<your folder with headers>")

然后,您应该使用以下内容链接 libmysqlclient.so:

target_link_libraries(mariadb_simple_test "mysqlclient")

看看从零开始的Linux之外,从源代码构建MariaDB:http://www.linuxfromscratch.org/blfs/view/svn/server/mariadb.html

您可能应该在运行 cmake 命令后编辑 CMakeCache.txt 文件以将安装文件夹指向例如/opt/mariadb/

我将从CMake设置库搜索路径作为额外的家庭作业:-)