FindODBC¶
3.12 版本新增。
查找 Open Database Connectivity (ODBC) 库,它实现了用于访问数据库系统的标准 API。
find_package(ODBC [...])
ODBC 使应用程序能够使用一组通用的函数与不同的数据库管理系统 (DBMS) 进行通信。与特定数据库的通信通过 ODBC 驱动程序处理,这些驱动程序在运行时由库加载。
在 Windows 上,使用 Visual Studio 构建时,此模块假定 ODBC 库由可用的 Windows SDK 提供。
在类 Unix 系统上,此模块搜索由 unixODBC 或 iODBC 实现的 ODBC API 提供的 ODBC 库。默认情况下,此模块首先从 unixODBC,然后从 iODBC 查找 ODBC config 程序以确定 ODBC 库和包含目录。如果找不到 config 程序,它将在标准位置搜索 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_LIBRARYODBC 库的路径或库名称。在 Windows 上,这可能只是一个库名称,因为编译环境中已提供了与预期 Windows SDK 相对应的库目录。
ODBC_CONFIG如果找到或指定,ODBC config 程序的路径。例如,unixODBC 的
odbc_config,或 iODBC 的iodbc-config。
限制¶
在 Windows 上,此模块不搜索 iODBC。
在类 Unix 系统上,没有内置机制可以优先选择 unixODBC 或 iODBC。为了绕过此限制,请将
ODBC_CONFIG变量显式设置为所需 ODBC config 程序的路径。此模块不支持搜索或选择特定的 ODBC 驱动程序。
示例¶
示例:查找和使用 ODBC¶
查找 ODBC 并将其链接到项目目标
CMakeLists.txt¶find_package(ODBC)
target_link_libraries(project_target PRIVATE ODBC::ODBC)
示例:查找自定义 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 config 程序(如果可用),以便可以根据 config 工具自动确定 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