programing

이전 버전과의 호환성을 위해 Debian의 MySQL 또는 MariaDB에 자동으로 연결하는 API 안정적인 방법

telecom 2023. 8. 23. 21:36
반응형

이전 버전과의 호환성을 위해 Debian의 MySQL 또는 MariaDB에 자동으로 연결하는 API 안정적인 방법

저는 데비안 제시에서 데비안 스트레치로 업그레이드했고, 이제 마리아DB가 MySQL을 대체했다는 것을 알게 되었습니다.

다행히도, C++에서, MariaDB 클라이언트는 여전히 다음을 통해 액세스할 수 있습니다.

#include <mysql/mysql.h>

하지만, 연결은 다릅니다.나는 링크를 걸곤 했습니다.-lmysqlclient이제 링크를 연결해야 합니다.-lmariadbclient.

내 프로그램은 둘 다 작동해야 합니다.그래서 제 질문은: MySQL을 사용할 수 있는지 확인하고 사용할 수 없다면 MariaDB로 연결할 수 있는 방법이 있습니까?

관련 프로젝트에 qmake와 cmake를 사용하고 있습니다.조언 부탁드립니다.

Cmake의 경우 다음을 간단히 사용할 수 있습니다.

    find_library( MYSQL_LIBRARY
    NAMES "mysqlclient" "mysqlclient_r"
    PATHS "/lib/mysql"
          "/lib64/mysql"
          "/usr/lib/mysql"
          "/usr/lib64/mysql"
          "/usr/local/lib/mysql"
          "/usr/local/lib64/mysql"
          "/usr/mysql/lib/mysql"
          "/usr/mysql/lib64/mysql" )

그런 다음 다음을 사용하여 확인합니다.

if(MYSQL_LIBRARY) {
  ...
}

github의 예와 같이:MYSql(RenatoUtsch) 또는 FindMySQL(mloskot)을 찾습니다.


qmake의 경우 다음과 같은 일반적인 위치를 확인하는 것뿐입니다.

!exists("/foo/bar/baz.so"):!exists("/hello/world/baz.so"):...: message("...")

Cmake 모듈 MariaDB 찾기는 MariaDB에 포함되어 있습니다.FindMySql은 MySql 외부에 있는 것 같습니다. GitHubrepo에는 많은 검색 결과가 있습니다.플래그를 선택하여 둘 다 검색합니다.그런 다음 MariaDB_FOUND를 기준으로 MariaDB_LIBRARIES 또는 MySql_LIBRARIES인 경우 값으로 변수를 설정합니다.후속 target_link_libraries()에서 해당 변수를 사용합니다.

언급URL : https://stackoverflow.com/questions/45648132/api-stable-way-to-automatically-link-to-either-mysql-or-mariadb-in-debian-for-ba

반응형