Qt 6.3 Configure意外启用了PostgreSQL



下载qt-everywhere-src-6.3.1后,我用配置了构建

$ ../qt-everywhere-src-6.3.1/configure -qt-zlib -qt-libjpeg -qt-libpng -qt-freetype -qt-pcre -qt-harfbuzz -sql-sqlite -prefix <myPath>/qt_6.3.1_install

输出显示

The following packages have been found:
[...]
* WrapOpenGL
* PostgreSQL
* ODBC
[...]
Qt Sql Drivers:
DB2 (IBM) .............................. no
InterBase .............................. no
MySql .................................. no
OCI (Oracle) ........................... no
ODBC ................................... yes
PostgreSQL ............................. yes
SQLite ................................. yes
Using system provided SQLite ......... no

我没有安装PostgreSQL,我也不想。

当我使用构建时

cmake --build . --parallel

构建失败

[1335/9292] Linking CXX shared module qtbasepluginssqldriversqsqlpsql.dll
FAILED: qtbase/plugins/sqldrivers/qsqlpsql.dll qtbase/src/plugins/sqldrivers/psql/QPSQLDriverPlugin.version C:/Data/programs/qt_6.3.1_build/qtbase/src/plugins/sqldrivers/psql/QPSQLDriverPlugin.version
cmd.exe /C "cmd.exe /C "cd /D C:Dataprogramsqt-everywhere-src-6.3.1qtbasesrcpluginssqldriverspsql && "C:Program FilesGitusrbinperl.exe" C:/Data/programs/qt-everywhere-src-6.3.1/qtbase/mkspecs/features/data/unix/findclasslist.pl < C:/Data/programs/qt_6.3.1_build/qtbase/src/plugins/sqldrivers/psql/QPSQLDriverPlugin.version.in > C:/Data/programs/qt_6.3.1_build/qtbase/src/plugins/sqldrivers/psql/QPSQLDriverPlugin.version && cd C:Dataprogramsqt_6.3.1_build" && C:Dataprogramsmingw64binc++.exe -DNDEBUG -O2  -Wl,--no-undefined -Wl,--version-script,C:/Data/programs/qt_6.3.1_build/qtbase/src/plugins/sqldrivers/psql/QPSQLDriverPlugin.version -shared -o qtbasepluginssqldriversqsqlpsql.dll -Wl,--major-image-version,0,--minor-image-version,0 qtbase/src/plugins/sqldrivers/psql/CMakeFiles/QPSQLDriverPlugin.dir/QPSQLDriverPlugin_autogen/mocs_compilation.cpp.obj qtbase/src/plugins/sqldrivers/psql/CMakeFiles/QPSQLDriverPlugin.dir/main.cpp.obj qtbase/src/plugins/sqldrivers/psql/CMakeFiles/QPSQLDriverPlugin.dir/qsql_psql.cpp.obj qtbase/src/plugins/sqldrivers/psql/CMakeFiles/QPSQLDriverPlugin.dir/QPSQLDriverPlugin_resource.rc.obj  C:/Strawberry/c/lib/libpq.a  qtbase/lib/libQt6Sql.a  qtbase/lib/libQt6Core.a  -lmpr  -luserenv  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
C:/Data/programs/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: qtbase/src/plugins/sqldrivers/psql/CMakeFiles/QPSQLDriverPlugin.dir/qsql_psql.cpp.obj:qsql_psql.cpp:(.text+0xb7): undefined reference to `PQgetisnull'
C:/Data/programs/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: qtbase/src/plugins/sqldrivers/psql/CMakeFiles/QPSQLDriverPlugin.dir/qsql_psql.cpp.obj:qsql_psql.cpp:(.text+0x230): undefined reference to `PQstatus'
C:/Data/programs/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: qtbase/src/plugins/sqldrivers/psql/CMakeFiles/QPSQLDriverPlugin.dir/qsql_psql.cpp.obj:qsql_psql.cpp:(.text+0x311): undefined reference to `PQcmdTuples'
[...]

据我所知,这个链接器缺少PostgreSQL库。我需要做什么才能禁用PostregSQL?

文档/configure-h为您提供了有关sql驱动程序的以下信息:

Database options:
-sql-<driver> ........ Enable SQL <driver> plugin. Supported drivers:
db2 ibase mysql oci odbc psql sqlite
[all auto]
-sqlite .............. Select used sqlite [system/qt]

经过太多的尝试和错误,我终于明白,你可以在大多数标志前面加上no。要禁用PostgreSQL,可以使用-no-sql-psql。我配置和构建Qt的完整命令行是:

../src/configure -qt-zlib -qt-libjpeg -qt-libpng -qt-freetype -qt-pcre -qt-harfbuzz -qt-sqlite -no-sql-psql -qt-tiff -qt-webp -no-ssl -skip qtopcua -prefix ../install

最新更新