C++ 使用MariaDB在Windows上构建MYSQL/QMYSQL插件时出错 如何使此配置/生成过程正常工作? 为什么会出现下面提到的不同QMAKE错误(如果可能,请详细说明)?

C++ 使用MariaDB在Windows上构建MYSQL/QMYSQL插件时出错 如何使此配置/生成过程正常工作? 为什么会出现下面提到的不同QMAKE错误(如果可能,请详细说明)?,c++,mysql,qt5,mariadb,qmake,C++,Mysql,Qt5,Mariadb,Qmake,源代码(带下载链接): 我在以下目录中解压并成功构建了MariaDB 5.5.56: D:\Source_Code-Third_Party\MariaDB\mariadb-5.5.56 Note: I "mkdir lib" and copy all ".lib"s into this folder post-build process. 然后,我通过编写的批处理脚本使用以下命令: set QMAKESPEC=win32-msvc2015 set _ROOT=

源代码(带下载链接):

我在以下目录中解压并成功构建了MariaDB 5.5.56:

    D:\Source_Code-Third_Party\MariaDB\mariadb-5.5.56
Note: I "mkdir lib" and copy all ".lib"s into this folder post-build process.
然后,我通过编写的批处理脚本使用以下命令:

    set QMAKESPEC=win32-msvc2015
    set _ROOT=

    set VS2015PATH="C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC"
    pushd %VS2015PATH%
    call vcvarsall.bat x64
    popd

    set CL=/MP
    set INSTPREFIX=D:\Qt\5.7.1
    set OPENSSL_PATH=%usefulStuff%
    set OPENSSL_LIBS=%usefulStuff%\libs
    set INCLUDE=%usefulStuff%\include;%INCLUDE%
    set LIB=%usefulStuff%\lib;%LIB%
    set LIBPATH=%usefulStuff%\lib;%LIBPATH%

    cd qtbase

    configure.bat -skip qtwebengine -skip qtpurchasing -skip qtlocation -skip qtconnectivity -mp -confirm-licence -nomake tests -nomake examples -debug-and-release -opensource -shared -dbus -mp -openssl -qtzlib -plugin-sql-mysql -I %usefulStuff%\include -L %usefulStuff%\lib -prefix %INSTPREFIX%

    cd src\plugins\sqldrivers\mysql
    set longDir=D:\Source_Code-Third_Party\qt-everywhere-opensource-src-5.7.1

    REM           (QMAKE COMMAND THAT CAUSES ERROR)
    %longDir%\qtbase\bin\qmake "INCLUDEPATH+= D:/Source_Code-Third_Party/MariaDB/mariadb-5.5.56/include" "LIBS+=D:/Source_Code-Third_Party/MariaDB/mariadb-5.5.56/lib/libmysql.lib" mysql.pro

    REM unsure if I should do an nmake here as well, or will the qtbase\nmake take care of everything (including plugin)
    REM nmake

    cd ..\..\..\..

    nmake
    nmake install
通过上面的(QMAKE ERROR命令),我得到了错误:

    Project ERRROR: No module claims plugin type 'sqldrivers'
     Project ERROR: Cannot load qmodule.pri!
     Error processing project file: mysql.pro
当我将(QMAKE ERROR命令)更改为以下内容时(使用不同的QMAKE):

我得到一个不同的错误:

    Project ERRROR: No module claims plugin type 'sqldrivers'
     Project ERROR: Cannot load qmodule.pri!
     Error processing project file: mysql.pro
我能找到的一些参考资料:

以下链接(Qt文档)是代码格式,因为“您需要至少10个信誉才能发布2个以上的链接。”

本应将此问题标记为“qmysql”,但“创建新标记'qmysql'至少需要1500个信誉。请尝试从现有标记列表中选择一些内容。”

----下面是相关的,但我更关心上面提到的错误---
我没有使用Qt5.8.0或5.9.0,因为我无法获得“-skip”、“-plugin sql mysql”和/或“-Qt sql mysql”来使用configure.bat。我会遇到如下错误:

    "-qt-sql-mysql"
    ERROR: Invalid value given for boolean command line option 'sql-mysql'.
                               OR
    "-plugin-sql-mysql"
    ERROR: Feature 'sql-mysql' was enabled, but the pre-condition 'libs.mysql' failed.
    Check config.log for details.
                               OR
    "-skip <somethingIShouldBeAbleToSkip>"
    ERROR: Unknown command line option '-skip'.
“-qt-sql-mysql”
错误:为布尔命令行选项“sql mysql”提供的值无效。
或
“-插件sql mysql”
错误:已启用功能“sql mysql”,但前置条件“libs.mysql”失败。
有关详细信息,请查看config.log。
或
“-跳过”
错误:未知的命令行选项'-skip'。
我找到的其中一个QTBUG引用:

  • 如果有人/人同时回答这两个问题&更多,那就太棒了
  • 提前谢谢大家

我按照以下说明在Windows上构建MariaDB:

构建之后,还应该继续并安装到系统上。此安装过程将所有内容放入QT构建过程的正确文件夹结构中

一旦您安装了MariaDB(它应该看起来像一个MySQL安装),您应该能够遵循MySQL的标准QT构建说明


在配置qt时使用类似于“-qt sql mysql-I C:\progra~1\mysql\include-L C:\progra~1\mysql\lib”的东西。我在QT 5.7.1中使用了这个过程。

我按照以下说明在Windows上构建MariaDB:

构建之后,还应该继续并安装到系统上。此安装过程将所有内容放入QT构建过程的正确文件夹结构中

一旦您安装了MariaDB(它应该看起来像一个MySQL安装),您应该能够遵循MySQL的标准QT构建说明


在配置qt时使用类似于“-qt sql mysql-I C:\progra~1\mysql\include-L C:\progra~1\mysql\lib”的东西。我在QT 5.7.1中使用了这个过程。

除了雪人6286的答案外,使用默认QT构建还必须执行以下操作:


Qt是使用正常设置的/MD标志构建的,因此必须以同样的方式构建MariaDB,以便Qt链接它。有问题的行位于。\cmake\os\Windows.cmake中。注释掉读取字符串的行(替换“/MD”“/MT”“${flag}”“${${flag}”)。此外,不要让升级向导通过注释掉根CMakeLists.txt中的
ADD_SUBDIRECTORY(win/upgrade_向导)
行进行构建。

除了Snowman6286的答案之外,对于使用默认Qt进行构建,必须执行以下操作:

Qt是使用正常设置的/MD标志构建的,因此必须以同样的方式构建MariaDB,以便Qt链接它。有问题的行位于。\cmake\os\Windows.cmake中。注释掉读取字符串的行(替换“/MD”“/MT”“${flag}”“${${flag}”)。此外,不要让升级向导通过注释掉根CMakeLists.txt中的
ADD_SUBDIRECTORY(win/upgrade_向导)
行来构建

    "-qt-sql-mysql"
    ERROR: Invalid value given for boolean command line option 'sql-mysql'.
                               OR
    "-plugin-sql-mysql"
    ERROR: Feature 'sql-mysql' was enabled, but the pre-condition 'libs.mysql' failed.
    Check config.log for details.
                               OR
    "-skip <somethingIShouldBeAbleToSkip>"
    ERROR: Unknown command line option '-skip'.