使用 CMake 测试 MariaDB 共享库
Testing the MariaDB shared library using CMake
我已经从源代码(带有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设置库搜索路径作为额外的家庭作业:-)
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 在cuda线程之间共享大量常量数据
- 如何从具有移动语义的类对象中生成共享指针
- 在c代码之间共享数据的最佳方式
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 将静态库链接到不带-fPIC的共享库中
- 为什么std::互斥需要很长的、非常不规则的时间来共享
- 使用Boost Interprocess创建托管共享内存需要很长时间
- 无法在Ubuntu上将共享库与Eclipse链接
- 从python调用openMP共享库时,未定义opnMP函数
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- 为什么我的共享库中存在展开符号
- 使用共享指针的函数调用,其对象应为 const
- 具有两个独占锁组的共享锁
- 共享队列的线程安全
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 多个"常量引用"变量可以共享同一个内存吗?
- 如何访问由共享指针保存的类方法?
- 使用 CMake 测试 MariaDB 共享库