FindODBC

3.12 版本新增。

查找开放数据库连接(ODBC)库,该库实现了一个用于访问数据库系统的标准API。ODBC使应用程序能够使用一组通用的函数与不同的数据库管理系统(DBMS)进行通信。与特定数据库的通信通过ODBC驱动程序处理,库在运行时加载这些驱动程序。

在Windows上,当使用Visual Studio构建时,此模块假定ODBC库由可用的Windows SDK提供。

在类Unix系统上,此模块搜索由unixODBC或iODBC实现的ODBC API提供的ODBC库。默认情况下,此模块首先查找unixODBC的ODBC配置程序,然后查找iODBC的,以确定ODBC库和包含目录。如果找不到配置程序,它将在标准位置搜索ODBC头文件和库。

导入的目标

此模块提供以下 导入目标

ODBC::ODBC

封装ODBC使用要求的目标,如果找到ODBC则可用。

结果变量

此模块定义了以下变量

ODBC_FOUND

指示是否找到ODBC的布尔值。

ODBC_INCLUDE_DIRS

包含使用ODBC所需的头文件的目录。

ODBC_LIBRARIES

链接ODBC所需的库。

缓存变量

以下缓存变量也可以设置

ODBC_INCLUDE_DIR

包含 sql.h 和其他ODBC头文件的目录路径。在Windows上可能为空,因为对应于预期Windows SDK的包含目录在编译环境中已可用。

ODBC_LIBRARY

ODBC库的路径或库名称。在Windows上,这可能只是一个库名称,因为对应于预期Windows SDK的库目录在编译环境中已可用。

ODBC_CONFIG

如果找到或指定了ODBC配置程序的路径。例如,unixODBC 的 odbc_config,或 iODBC 的 iodbc-config

限制

  • 在Windows上,此模块不搜索iODBC。

  • 在类Unix系统上,没有内置机制来优先选择unixODBC或iODBC。要绕过此限制,请显式设置 ODBC_CONFIG 变量为所需ODBC配置程序的路径。

  • 此模块不支持搜索或选择特定的ODBC驱动程序。

示例

查找和使用ODBC

查找ODBC并将其链接到项目目标

CMakeLists.txt
find_package(ODBC)
target_link_libraries(project_target PRIVATE ODBC::ODBC)

在类Unix系统上查找自定义ODBC安装

以下示例适用于类Unix系统,并演示如何在CMake配置阶段设置提示和缓存变量,以帮助此模块查找自定义ODBC实现(例如,默认不支持的实现)。

使用 CMAKE_PREFIX_PATH 指定安装前缀

$ cmake -D CMAKE_PREFIX_PATH=/path/to/odbc-installation -B build

或使用专用变量 ODBC_ROOT

$ cmake -D ODBC_ROOT=/path/to/odbc-installation -B build

如果可用,手动指定ODBC配置程序,以便可以根据配置工具自动确定ODBC安装

$ cmake -D ODBC_CONFIG=/path/to/odbc/bin/odbc-config -B build

手动指定ODBC库和包含目录

$ cmake \
    -D ODBC_LIBRARY=/path/to/odbc/lib/libodbc.so \
    -D ODBC_INCLUDE_DIR=/path/to/odbc/include \
    -B build