添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode . Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).

I am really tired of trying to create driver again and again from instructions of stack overflow, yt videos, github , qt official site for about 1 to 1.5 months 😭😭😭
Please! Please! Provide a fresh instruction to do it.

I have installed qt 6.5.1 fully also the necessary mysql libraries.

I have tried these kits below with build type Release:
Desktop Qt 6.5.1 MSVC2019 64bit
Desktop Qt 6.5.11 MSVC2019 64bit
Desktop (x86-windows-msys-pe-64bit)

From Qt creator-
issues:
F:\Qt\6.5.1\Src\qtbase\src\plugins\sqldrivers\mysql\CMakeLists.txt:8: error: Unknown CMake command "qt_internal_add_plugin".
:-1: error: CMake process exited with exit code 1.
:-1: error: CMake project configuration failed. No CMake configuration for build type "Release" found.

General Messages:
Running F:\Qt\Tools\CMake_64\bin\cmake.exe -S F:/Qt/6.5.1/Src/qtbase/src/plugins/sqldrivers/mysql -B F:/Qt/6.5.1/Src/qtbase/src/plugins/sqldrivers/build-mysql-Desktop_Qt_6_5_1_MSVC2019_64bit-Release in F:\Qt\6.5.1\Src\qtbase\src\plugins\sqldrivers\build-mysql-Desktop_Qt_6_5_1_MSVC2019_64bit-Release.
CMake Warning (dev) in CMakeLists.txt:
No project() command is present. The top-level CMakeLists.txt file must
contain a literal, direct call to the project() command. Add a line of
code such as

project(ProjectName)

near the top of the file, but after cmake_minimum_required().

CMake is pretending there is a "project(Project)" command on the first
line.
This warning is for project developers. Use -Wno-dev to suppress it.

CMake Error at CMakeLists.txt:8 (qt_internal_add_plugin):
Unknown CMake command "qt_internal_add_plugin".

CMake Warning (dev) in CMakeLists.txt:
No cmake_minimum_required command is present. A line of code such as

cmake_minimum_required(VERSION 3.24)

should be added at the top of the file. The version specified may be lower
if you wish to support older CMake versions for this project. For more
information run "cmake --help-policy CMP0000".
This warning is for project developers. Use -Wno-dev to suppress it.

-- Configuring incomplete, errors occurred!
See also "F:/Qt/6.5.1/Src/qtbase/src/plugins/sqldrivers/build-mysql-Desktop_Qt_6_5_1_MSVC2019_64bit-Release/CMakeFiles/CMakeOutput.log".
CMake process exited with exit code 1.

Elapsed time: 00:00.

mkdir build-sqldrivers01
cd build-sqldrivers01

qt-cmake -G Ninja <qt_installation_path>\C:\Qt\6.5.1\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path><platform> -DMySQL_INCLUDE_DIR="C:\mysql-8.0.33-winx64\include" -DMySQL_LIBRARY="C:\mysql-8.0.33-winx64\lib\libmysql.lib"
cmake --build .
cmake --install .

Result:
The system cannot find the file specified.

I ran this code on Qt 6.5.1 (MinGW 11.2.0 64-bit). I assure that this include path and the lib file is also valid.

Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
Visit the Qt Academy at https://academy.qt.io/catalog

@Saad02 Ok, I understood little.
Code:
qt-cmake -G Ninja C:/Qt/6.5.1/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=C:/Qt/<platform> -DMySQL_INCLUDE_DIR="C:/mysql-8.0.33-winx64/include" -DMySQL_LIBRARY="C:/mysql-8.0.33-winx64/lib/mysqlclient.<so|dylib>"

Do I need to change anything here now?

@Saad02 try the following batch script (adjust the paths if necessary first):

set PATH=%PATH%;C:\Qt\Tools\mingw1120_64\bin;C:\Qt\Tools\CMake_64\bin
cd C:\Qt\6.5.1\Src\qtbase\src\plugins\sqldrivers
call C:\Qt\6.5.1\mingw_64\bin\qt-cmake.bat -G "MinGW Makefiles" . -DMySQL_INCLUDE_DIR="C:\mysql-8.0.33-winx64\include" -DMySQL_LIBRARY="C:\mysql-8.0.33-winx64\lib\libmysql.lib" -DCMAKE_INSTALL_PREFIX="C:\Qt\6.5.1\mingw_64" -DCMAKE_C_COMPILER="gcc.exe" -DCMAKE_CXX_COMPILER="g++.exe"
mingw32-make
mingw32-make install
pause
	

@thecodemonkey Sorry, the image is too large. I think I should just copy paste it.

Error:
C:\Qt\6.5.1\Src\qtbase\src\plugins\sqldrivers>mingw32-make
[ 4%] Built target QMYSQLDriverPlugin_version_script
[ 8%] Automatic MOC for target QMYSQLDriverPlugin
[ 8%] Built target QMYSQLDriverPlugin_autogen
[ 32%] Built target QMYSQLDriverPlugin
[ 36%] Built target QODBCDriverPlugin_version_script
[ 40%] Automatic MOC for target QODBCDriverPlugin

AutoMoc subprocess error

The moc process failed to compile
"SRC:/odbc/qsql_odbc_p.h"
"SRC:/odbc/QODBCDriverPlugin_autogen/include/moc_qsql_odbc_p.cpp"
included by
"SRC:/odbc/qsql_odbc.cpp"

Command

C:/Qt/6.5.1/mingw_64/./bin/moc.exe -DMINGW_HAS_SECURE_API=1 -DQODBCDriverPlugin_EXPORTS -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_UP_TO=0x040800 -DQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_EXCEPTIONS -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_PLUGIN -DQT_SQL_LIB -DQT_WARN_DEPRECATED_UP_TO=0x070000 -DUNICODE -DWIN32 -DWIN64 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_WIN64 -IC:/Qt/6.5.1/Src/qtbase/src/plugins/sqldrivers/odbc -IC:/Qt/6.5.1/Src/qtbase/src/plugins/sqldrivers/include -IC:/MinGW/include -IC:/Qt/6.5.1/mingw_64/include/QtCore -IC:/Qt/6.5.1/mingw_64/include -IC:/Qt/6.5.1/mingw_64/mkspecs/win32-g++ -IC:/Qt/6.5.1/mingw_64/include/QtCore/6.5.1 -IC:/Qt/6.5.1/mingw_64/include/QtCore/6.5.1/QtCore -IC:/Qt/6.5.1/mingw_64/include/QtSql/6.5.1 -IC:/Qt/6.5.1/mingw_64/include/QtSql/6.5.1/QtSql -IC:/Qt/6.5.1/mingw_64/include/QtSql -IC:/Qt/Tools/mingw1120_64/lib/gcc/x86_64-w64-mingw32/11.2.0/include/c++ -IC:/Qt/Tools/mingw1120_64/lib/gcc/x86_64-w64-mingw32/11.2.0/include/c++/x86_64-w64-mingw32 -IC:/Qt/Tools/mingw1120_64/lib/gcc/x86_64-w64-mingw32/11.2.0/include/c++/backward -IC:/Qt/Tools/mingw1120_64/lib/gcc/x86_64-w64-mingw32/11.2.0/include -IC:/Qt/Tools/mingw1120_64/lib/gcc/x86_64-w64-mingw32/11.2.0/include-fixed -IC:/Qt/Tools/mingw1120_64/x86_64-w64-mingw32/include --include C:/Qt/6.5.1/Src/qtbase/src/plugins/sqldrivers/odbc/QODBCDriverPlugin_autogen/moc_predefs.h --output-dep-file -o C:/Qt/6.5.1/Src/qtbase/src/plugins/sqldrivers/odbc/QODBCDriverPlugin_autogen/include/moc_qsql_odbc_p.cpp C:/Qt/6.5.1/Src/qtbase/src/plugins/sqldrivers/odbc/qsql_odbc_p.h

Output

:/Qt/6.5.1/mingw_64/include/QtCore/qnamespace.:24:1: error: Parse error at "attribute"

AutoMoc subprocess error

The moc process failed to compile
"SRC:/odbc/main.cpp"
"SRC:/odbc/QODBCDriverPlugin_autogen/include/main.moc"
included by
"SRC:/odbc/main.cpp"

Command

C:/Qt/6.5.1/mingw_64/./bin/moc.exe -DMINGW_HAS_SECURE_API=1 -DQODBCDriverPlugin_EXPORTS -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_UP_TO=0x040800 -DQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_EXCEPTIONS -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_PLUGIN -DQT_SQL_LIB -DQT_WARN_DEPRECATED_UP_TO=0x070000 -DUNICODE -DWIN32 -DWIN64 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_WIN64 -IC:/Qt/6.5.1/Src/qtbase/src/plugins/sqldrivers/odbc -IC:/Qt/6.5.1/Src/qtbase/src/plugins/sqldrivers/include -IC:/MinGW/include -IC:/Qt/6.5.1/mingw_64/include/QtCore -IC:/Qt/6.5.1/mingw_64/include -IC:/Qt/6.5.1/mingw_64/mkspecs/win32-g++ -IC:/Qt/6.5.1/mingw_64/include/QtCore/6.5.1 -IC:/Qt/6.5.1/mingw_64/include/QtCore/6.5.1/QtCore -IC:/Qt/6.5.1/mingw_64/include/QtSql/6.5.1 -IC:/Qt/6.5.1/mingw_64/include/QtSql/6.5.1/QtSql -IC:/Qt/6.5.1/mingw_64/include/QtSql -IC:/Qt/Tools/mingw1120_64/lib/gcc/x86_64-w64-mingw32/11.2.0/include/c++ -IC:/Qt/Tools/mingw1120_64/lib/gcc/x86_64-w64-mingw32/11.2.0/include/c++/x86_64-w64-mingw32 -IC:/Qt/Tools/mingw1120_64/lib/gcc/x86_64-w64-mingw32/11.2.0/include/c++/backward -IC:/Qt/Tools/mingw1120_64/lib/gcc/x86_64-w64-mingw32/11.2.0/include -IC:/Qt/Tools/mingw1120_64/lib/gcc/x86_64-w64-mingw32/11.2.0/include-fixed -IC:/Qt/Tools/mingw1120_64/x86_64-w64-mingw32/include --include C:/Qt/6.5.1/Src/qtbase/src/plugins/sqldrivers/odbc/QODBCDriverPlugin_autogen/moc_predefs.h --output-dep-file -o C:/Qt/6.5.1/Src/qtbase/src/plugins/sqldrivers/odbc/QODBCDriverPlugin_autogen/include/main.moc C:/Qt/6.5.1/Src/qtbase/src/plugins/sqldrivers/odbc/main.cpp

Output

:/Qt/6.5.1/mingw_64/include/QtCore/qnamespace.:24:1: error: Parse error at "attribute"

mingw32-make[2]: *** [odbc\CMakeFiles\QODBCDriverPlugin_autogen.dir\build.make:70: odbc/CMakeFiles/QODBCDriverPlugin_autogen] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:355: odbc/CMakeFiles/QODBCDriverPlugin_autogen.dir/all] Error 2
mingw32-make: *** [Makefile:145: all] Error 2

@Saad02 I know, building SQL drivers can be a pain in the A-S-S. That's the reason I provide pre-built QMYSQL drivers on my github page, to spare others that pain

Does anything change if you run configure.bat first?

set PATH=%PATH%;C:\Qt\Tools\mingw1120_64\bin;C:\Qt\Tools\CMake_64\bin
cd C:\Qt\6.5.1\Src
configure.bat -sql-mysql -- -DCMAKE_INCLUDE_PATH="C:\mysql-8.0.33-winx64\include" -DCMAKE_LIBRARY_PATH="C:\mysql-8.0.33-winx64\lib"
cd C:\Qt\6.5.1\Src\qtbase\src\plugins\sqldrivers
call C:\Qt\6.5.1\mingw_64\bin\qt-cmake.bat -G "MinGW Makefiles" . -DMySQL_INCLUDE_DIR="C:\mysql-8.0.33-winx64\include" -DMySQL_LIBRARY="C:\mysql-8.0.33-winx64\lib\libmysql.lib" -DCMAKE_INSTALL_PREFIX="C:\Qt\6.5.1\mingw_64" -DCMAKE_C_COMPILER="gcc.exe" -DCMAKE_CXX_COMPILER="g++.exe"
mingw32-make
mingw32-make install
pause
	

@Saad02 said in How to create Qt 6.5 mysql driver with cmake?:

@Saad02 Ok, I understood little.
Code:
qt-cmake -G Ninja C:/Qt/6.5.1/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=C:/Qt/<platform> -DMySQL_INCLUDE_DIR="C:/mysql-8.0.33-winx64/include" -DMySQL_LIBRARY="C:/mysql-8.0.33-winx64/lib/mysqlclient.<so|dylib>"

Do I need to change anything here now?

As already said several times: all the values between a < and > must be replaced by suitable values.

@thecodemonkey Sir, I extracted those in my project file is it, ok? (But it didn't work)
And did you mean any of the folder in Qt by "subdirectory "?

Also, this code also got me the same error.

@SGaist Then what should I replace the <platform> and <soIdylib> with? If I am not wrong the 2nd one is ".lib".
Also, is it possible for you to gimme the exact code that I can run directly? It seems to be a little tough for me though I tried.

@Saad02 there are two possibilites, both should work:

  • in Qt installation dir. For MinGW that would be something like C:\Qt\6.5.1\mingw_64\plugins\sqldrivers
  • a subdirectory in your project build path (where the compiler creates the exe file of your project), like this:

    libmysql.dll must be accessible, too. So either copy it to your project build path, or some other path that is added to your PATH environment variable

  •