How to create Qt 6.5 mysql driver with cmake?
-
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 asproject(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 ascmake_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.
-
-
Hi,
Just follow the instructions of the documentation. Don't try to be fancy.
-
-
@SGaist Sir, I tried it several times and now again-
Code:
mkdir build-sqldrivers01
cd build-sqldrivers01qt-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.
-
@Saad02 Are you serious with the last screenshot? I mean -
<qt_installation_path>
should be replaced with your ... qt installation path. Also the command line properly tells you that qt-cmake is not found so what do you expect?? -
@Christian-Ehrlicher Sir, it finds qt-make properly. And I have never made any driver or binary on by own. Then should I remove <qt_installation_path> and retry?
-
@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 I got some error when I used the command mingw32-make.
![519252e7-a5af-4757-a934-d49f3834d0c0-image.png](Request Entity Too Large) -
@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 QODBCDriverPluginAutoMoc subprocess error
The moc process failed to compile
"SRC:/odbc/qsql_odbc_p.h"
into
"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"
into
"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.
-
-
@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
-
@thecodemonkey Sir, copied all files in release and debug, qmysql.lib in C:\Qt\6.5.1\mingw_64\plugins\sqldrivers and also added the folder in environment. But it didn't work.
-
@Saad02 said in How to create Qt 6.5 mysql driver with cmake?:
But it didn't work.
Please be more specific