Mac os编译postgreSQL driver for QT教程

本文记录了如何在Mac系统上从零开始编译postgreSQL驱动。

系统以及设备信息:

  • sequoia 14.3

  • Mac M1

步骤

  1. 确保数据库客户端已安装

  2. 新建build文件夹,使用以下命令编译sql驱动。以下命令的含义是:用 Qt 6.5.3 的源码,只编译 QSql 驱动插件(QPSQL),并准备安装到现有 Qt 安装目录中

    qt-cmake -G Ninja /Users/username/Qt/6.5.3/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Users/username/Qt/6.5.3/macos -DPostgreSQL_ROOT=/opt/homebrew/opt/postgresql@14 -DQT_GENERATE_SBOM=OFF -DQT_BUILD_IS_SUBDIR=ON -DPLUGINS_ONLY=ON -Dsql_psql=ON -Dsql_sqlite=OFF -DCMAKE_PREFIX_PATH=/Users/goodusernameboy/Qt/6.5.3/macos
    
  3. 编译完成后先使用ninja命令,然后再使用ninja install命令将驱动安装到Qt目录。

可能遇到的问题

  • SBOM error

    CMake Error at /opt/homebrew/lib/cmake/Qt6/QtPublicSbomHelpers.cmake:1405 (message):
    No SBOM project name was set.
    Call Stack (most recent call first):
    /opt/homebrew/lib/cmake/Qt6/QtPublicSbomHelpers.cmake:1395 (_qt_internal_sbom_get_root_project_name_lower_case)
    /opt/homebrew/lib/cmake/Qt6/QtPublicSbomHelpers.cmake:1502 (_qt_internal_sbom_get_root_project_name_for_spdx_id)
    /opt/homebrew/lib/cmake/Qt6/QtPublicSbomHelpers.cmake:1469 (_qt_internal_sbom_generate_target_package_spdx_id)
    /opt/homebrew/lib/cmake/Qt6/QtPublicSbomHelpers.cmake:1242 (_qt_internal_sbom_record_target_spdx_id)
    /opt/homebrew/lib/cmake/Qt6/QtSbomHelpers.cmake:195 (_qt_internal_extend_sbom)
    /opt/homebrew/lib/cmake/Qt6/QtPluginHelpers.cmake:479 (qt_internal_extend_qt_entity_sbom)
    psql/CMakeLists.txt:10 (qt_internal_add_plugin)
    

    解决方法编译时设置 -DQT_GENERATE_SBOM=OFF 参数

  • 数据库连接/初始化失败

    Database connection failed: "connection to server at \"localhost\" (::1), port 5432 failed: Connection refused\n\tIs the server running on that host and accepting TCP/IP connections?\nconnection to server at \"localhost\" (127.0.0.1), port 5432 failed: Connection refused\n\tIs the server running on that host and accepting TCP/IP connections?\nQPSQL: Unable to connect"
    Failed to initialize database
    

    解决方法

    1. 检查postgreSQL是否已经启动,并且在监听 5432 端口
    2. 检查 postgresql.conf 配置文件是否在监听局域网连接,确认 pg_hba.conf 配置文件(M系列默认路径: /opt/homebrew/var/postgresql@xx )是否允许本地localhost用户/局域网用户连接。

✍️ 作者:𝓜.𝓦𝓱𝓲𝓽𝓮

📄 共享协议: CC 4.0协议

🔗 原文链接: https://www.alloworld.me/archives/how-to-build-qt-postgreSQL-driver

评论