Qt如何构建SQLite驱动程序



我在Windows中使用Qt进行开发。

我目前使用的是Qt版本5.11.3。它附带了一个用于3.24.0版本的SQLite驱动程序。我想使用最新版本的SQLite(3.34.0(重建驱动程序,我已经将其下载到C:\SQLite。

我已经使用维护工具下载了Qt源代码,但无法确定如何构建驱动程序。

Qt安装在C:\Qt。在检查了C:\Qt\5.11.3\Src中的自述文件后,我打开了一个命令窗口并执行了以下操作:

cd C:Qt5.11.3Src
PATH=%PATH%;C:QtToolsmingw530_32bin
configure -prefix %CD%qtbase -nomake tests -nomake examples -skip qtwebengine -opensource -confirm-license
cd qtbasesrcpluginssqldrivers
Qt5.11.3mingw53_32binqmake.exe -- -system-sqlite SQLITE3_PREFIX=C:SQLite

失败

项目错误:不能在顶级构建中单独配置sqldriver。

我做错了什么?我应该采取什么不同的做法?

从头开始构建SQLite对我来说是一段艰难的经历。这是一个复杂而挑剔的过程,需要在计算机上安装Tcl(https://www.activestate.com/products/tcl/)。

我建议使用MSVC并从命令行构建它,如SQLite所述。它是"更容易";比Qt Creator更快。您只需链接到sqlite3.lib并在运行目录中包含sqlite3.dll即可。

这是一个命令文件;更改目录名以反映您正在使用的Visual Studio版本。

注:

  • tcl86t.lib复制到tcl86.lib
  • 确保解压SQLite源的目录名中没有空格
  • 跳过SETPATH语句。如果您多次重新运行,它将复合
cls
:: to find cl.exe, rc.exe
SET PATH=%PATH%;C:Program Files (x86)Microsoft Visual Studio2017CommunityVCToolsMSVC14.16.27023binHostx64x64
SET PATH=%PATH%;C:Program Files (x86)Windows Kits10Include10.0.17763.0ucrt
SET PATH=%PATH%;C:Program Files (x86)Windows Kits10bin10.0.17763.0x64
SET PATH=%PATH%;C:ActiveTclbin
SET NMAKE="C:Program Files (x86)Microsoft Visual Studio2017CommunityVCToolsMSVC14.16.27023binHostx64x64nmake.exe"
:: Assumes source was unzipped in "C:SQLite"
SET SQL=C:SQLite
SET INCLUDE=C:Program Files (x86)Windows Kits10Include10.0.17763.0ucrt;C:Program Files (x86)Microsoft Visual Studio2017CommunityVCToolsMSVC14.16.27023include
:: windows.h, winresrc.h
SET INCLUDE=%INCLUDE%;C:Program Files (x86)Windows Kits10Include10.0.17763.0um
:: winapifamily.h
SET INCLUDE=%INCLUDE%;C:Program Files (x86)Windows Kits10Include10.0.17763.0shared
:: tcl.h
SET INCLUDE=%INCLUDE%;C:ActiveTclinclude
SET LIB=C:Program Files (x86)Microsoft Visual Studio2017CommunityVCToolsMSVC14.16.27023libx64
SET LIB=%LIB%;C:Program Files (x86)Windows Kits10Lib10.0.17763.0umx64
SET LIB=%LIB%;C:Program Files (x86)Windows Kits10Lib10.0.17763.0ucrtx64
SET LIB=%LIB%;C:ActiveTcllib
CD $SQL%
IF NOT EXIST bld mkdir bld
:: Safer to delete previous runs, appears to not be able to overwrite
del /S /Q bld*.* >NUL
cd bld
%NMAKE% /f "%SQL%Makefile.msc" TOP=..sqlite >error.log
%NMAKE% /f "%SQL%Makefile.msc" sqlite3.c TOP=..sqlite >>error.log
%NMAKE% /f "%SQL%Makefile.msc" sqlite3.dll TOP=..sqlite >>error.log
%NMAKE% /f"%SQL%Makefile.msc" sqlite3.exe TOP=..sqlite >>error.log
%NMAKE% /f"%SQL%Makefile.msc" test TOP=..sqlite >>error.log

我终于成功地为Qt构建了一个SQLite驱动程序。

和以往一样,在解决了这类问题后,一切似乎都很明显,很难确定是什么构成了突破。

我在Qt论坛上的这个帖子中收到了很多建议。有些非常有用,还有一些。。。可能我被告知的最有用的事情是,没有必要执行我最初请求帮助的configure命令。

我仍然遇到了一些问题,可能是由于我自己不熟悉bash脚本。

最新更新