使用 PostgreSQL 编译静态 Qt 5.10.0 时出错

Error while compiling static Qt 5.10.0 with PostgreSQL

本文关键字:出错 Qt PostgreSQL 编译 静态 使用      更新时间:2023-10-16

我正在尝试在Windows 7上使用mingw使用PostgreSQL 10(或9.2,但相同的错误(编译Qt 5.10.0。

但是,当我包含 psql 包含和 lib dirs 时,在 mingw32-make 之后我总是收到以下错误:

g++ -c -fno-keep-inline-dllexport -O2 -std=c++1z -fno-exceptions -Wextra -Wall -
W -Wvla -Wdate-time -DUNICODE -D_UNICODE -DWINVER=0x0601 -D_WIN32_WINNT=0x0601 -
DQT_MOC -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_FROM_BYTEARRAY -DQT_NO_COMPRESS -DQ
T_NO_FOREACH -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_USE_QSTRINGBUILDER -D
QT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_BOOTSTRAP_LIB -DQT_VERSION_STR=""5.10.0""
-DQT_VERSION_MAJOR=5 -DQT_VERSION_MINOR=10 -DQT_VERSION_PATCH=0 -DQT_BOOTSTRAPPE
D -DQT_NO_CAST_TO_ASCII -I. -I. -I......include -I......includeQtCore -I.
.....includeQtCore5.10.0 -I......includeQtCore5.10.0QtCore -I......
includeQtXml -I......includeQtXml5.10.0 -I......includeQtXml5.10.0Q
tXml -IC:POSTGRESQL10include -I......mkspecswin32-g++  -o .objreleasem
oc.o moc.cpp
In file included from symbols.h:33:0,
                 from parser.h:32,
                 from moc.h:32,
                 from moc.cpp:30:
token.h:65:7: error: expected identifier before 'void'
     F(THIS) 
       ^
token.h:216:33: note: in definition of macro 'CREATE_ENUM_VALUE'
 #define CREATE_ENUM_VALUE(Name) Name,
                                 ^
 ...
token.h:263:1: error: expected declaration before '}' token
 };
 ^
Makefile.Release:314: recipe for target '.obj/release/moc.o' failed

我在谷歌上搜索并在qt论坛上找到了一个线程,其中有人有相同的错误,但没有解决方案:https://forum.qt.io/topic/66218/trubble-with-static-qt5-6-0-with-qt-sql-psql-compiling-from-source

我的配置命令如下所示:

configure -prefix C:QtStatic5.10.0 -static -release -nomake tests -nomake   examples -confirm-license -I"C:POSTGRESQL10include" -L"C:POSTGRESQL10lib" -opensource -qt-zlib -qt-libpng -qt-libjpeg -sql-psql -opengl desktop

如果我删除,编译工作正常

-I"C:POSTGRESQL10include"
-L"C:POSTGRESQL10lib"

但显然没有 PSQL。

关于如何解决此问题的任何想法将不胜感激,谢谢。

您似乎最近没有构建Qt(5.8后(-不再支持-I-L配置语法。

对我来说,postgres 只是工作,我所需要的只是-sql-psql配置标志和系统路径中的库。

如果仅此行不通,则可以通过添加以下配置标志来指定路径:

PSQL_INCDIR=C:POSTGRESQL10include
PSQL_LIBDIR=C:POSTGRESQL10lib