How to compile QMYSQL plugin with MSVC?
-
Hello,
I'm trying to recompile the qmysql plugin from MSVC using:
cmake -G Ninja -DCMAKE_PREFIX_PATH="C:\Qt\6.3.0\msvc2019_64" -DMYSQL_INCLUDE_DIR="C:\Program Files\MySQL\MySQL Connector C 6.1\include" -DMYSQL_LIB_DIR="C:\Program Files\MySQL\MySQL Connector C 6.1\lib" C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\mysql
Unfortunately I get errors that are directly related to the plugin itself.
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 Warning (dev) in CMakeLists.txt: cmake_minimum_required() should be called prior to this top-level project() call. Please see the cmake-commands(7) manual for usage documentation of both commands. This warning is for project developers. Use -Wno-dev to suppress it. -- The C compiler identification is GNU 6.3.0 -- The CXX compiler identification is GNU 6.3.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: C:/MinGW/bin/gcc.exe - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: C:/MinGW/bin/c++.exe - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done CMake Error at CMakeLists.txt:7 (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.30) 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!
How can I solve this problem?
Have a good day -
Hi,
I would recommend following the instructions shown in Qt's documentation.
-
@SGaist Thanks for reply!
I followed the tutorial from the website:
mkdir build-sqldrivers cd build-sqldrivers qt-cmake -G Ninja <qt_installation_path>\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>\<platform> -DMySQL_ROOT="C:\mysql-8.0.22-winx64" cmake --build . cmake --install .
In my case, instead of qt-cmake I used cmake:
mkdir build-sqldrivers cd build-sqldrivers cmake -G Ninja C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=C:\Qt\Tools\CMake_64\bin -DMySQL_ROOT="C:\mysql-8.0.28-winx64\mysql-8.0.28-winx64" cmake --build . cmake --install .
My CMD looks like this:
C:\mysql-8.0.28-winx64\build-sqldrivers>cmake -G Ninja C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=C:\Qt\Tools\CMake_64\bin -DMySQL_ROOT="C:\mysql-8.0.28-winx64\mysql-8.0.28-winx64" -- Configuring done (1.0s) -- Generating done (0.3s) -- Build files have been written to: C:/Qt/6.3.0/Src/qtbase/src/plugins/sqldrivers C:\mysql-8.0.28-winx64\build-sqldrivers>cmake --build . Error: could not load cache C:\mysql-8.0.28-winx64\build-sqldrivers>
The build-sqldrivers folder is empty. What could be wrong?
Have a good day -
@BushyAxis793 said in How to compile QMYSQL plugin with MSVC?:
n my case, instead of qt-cmake I used cmake:
Follow the documentation...
-
@BushyAxis793 qt-cmake is not a typo in the doc, it is a wrapper that executes cmake configured for the Qt build you are about to use.
-
Indeed my mistake. I made corrections. But I still have a problem:
C:\Users\mnawr>cd C:\mysql-8.0.28-winx64\build-sqldrivers C:\mysql-8.0.28-winx64\build-sqldrivers>qt-cmake -G Ninja C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=C:\Qt\Tools\CMake_64\bin -DMySQL_ROOT="C:\mysql-8.0.28-winx64\mysql-8.0.28-winx64" -- Configuring done (1.0s) -- Generating done (0.3s) -- Build files have been written to: C:/Qt/6.3.0/Src/qtbase/src/plugins/sqldrivers C:\mysql-8.0.28-winx64\build-sqldrivers>
As you can see I use qt-cmake instead of cmake. But build-sqldrivers folder is still empty.
-
@BushyAxis793 said in How to compile QMYSQL plugin with MSVC?:
Build files have been written to: C:/Qt/6.3.0/Src/qtbase/src/plugins/sqldrivers
As you can see they are generated there.
Please start over with a clean source directory. -
I removed everything and start again with create build-sqldrivers and the directory C:/Qt/6.3.0/Src/qtbase/src/plugins/sqldrivers looks like:
So I went to the directory with command: cd C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers
and wrote cmake --build . And this is the result:
[1/10] Building CXX object sqlite\CMakeFiles\QSQLiteDriverPlugin.dir\smain.cpp.obj FAILED: sqlite/CMakeFiles/QSQLiteDriverPlugin.dir/smain.cpp.obj C:\PROGRA~1\MICROS~3\2022\COMMUN~1\VC\Tools\MSVC\1443~1.348\bin\Hostx64\x64\cl.exe /nologo /TP -DQSQLiteDriverPlugin_EXPORTS -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_EXCEPTIONS -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_PLUGIN -DQT_SQL_LIB -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_RTREE -DSQLITE_OMIT_COMPLETE -DSQLITE_OMIT_LOAD_EXTENSION -DUNICODE -DWIN32 -DWIN64 -D_CRT_SECURE_NO_WARNINGS -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_WIN64 -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite\QSQLiteDriverPlugin_autogen\include -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\include -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite\..\..\..\3rdparty\sqlite -external:IC:\Qt\6.3.0\msvc2019_64\include\QtCore -external:IC:\Qt\6.3.0\msvc2019_64\include -external:IC:\Qt\6.3.0\msvc2019_64\mkspecs\win32-msvc -external:IC:\Qt\6.3.0\msvc2019_64\include\QtCore\6.3.0 -external:IC:\Qt\6.3.0\msvc2019_64\include\QtCore\6.3.0\QtCore -external:IC:\Qt\6.3.0\msvc2019_64\include\QtSql\6.3.0 -external:IC:\Qt\6.3.0\msvc2019_64\include\QtSql\6.3.0\QtSql -external:IC:\Qt\6.3.0\msvc2019_64\include\QtSql -external:W0 /DWIN32 /D_WINDOWS /GR /Z7 /RTC1 -std:c++17 -MDd -W0 /EHs-c- /wd4530 /wd4577 -Zc:__cplusplus -permissive- -utf-8 -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:externConstexpr -Zc:wchar_t -bigobj /showIncludes /Fosqlite\CMakeFiles\QSQLiteDriverPlugin.dir\smain.cpp.obj /Fdsqlite\CMakeFiles\QSQLiteDriverPlugin.dir\ /FS -c C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite\smain.cpp C:\Qt\6.3.0\msvc2019_64\include\QtCore/qglobal.h(45): fatal error C1083: Nie można otworzyć pliku dołącz: 'type_traits': No such file or directory [2/10] Building CXX object odbc\CMakeFiles\QODBCDriverPlugin.dir\qsql_odbc.cpp.obj FAILED: odbc/CMakeFiles/QODBCDriverPlugin.dir/qsql_odbc.cpp.obj C:\PROGRA~1\MICROS~3\2022\COMMUN~1\VC\Tools\MSVC\1443~1.348\bin\Hostx64\x64\cl.exe /nologo /TP -DQODBCDriverPlugin_EXPORTS -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_EXCEPTIONS -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_PLUGIN -DQT_SQL_LIB -DUNICODE -DWIN32 -DWIN64 -D_CRT_SECURE_NO_WARNINGS -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_WIN64 -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\odbc\QODBCDriverPlugin_autogen\include -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\odbc -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\include -external:I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um" -external:IC:\Qt\6.3.0\msvc2019_64\include\QtCore -external:IC:\Qt\6.3.0\msvc2019_64\include -external:IC:\Qt\6.3.0\msvc2019_64\mkspecs\win32-msvc -external:IC:\Qt\6.3.0\msvc2019_64\include\QtCore\6.3.0 -external:IC:\Qt\6.3.0\msvc2019_64\include\QtCore\6.3.0\QtCore -external:IC:\Qt\6.3.0\msvc2019_64\include\QtSql\6.3.0 -external:IC:\Qt\6.3.0\msvc2019_64\include\QtSql\6.3.0\QtSql -external:IC:\Qt\6.3.0\msvc2019_64\include\QtSql -external:W0 /DWIN32 /D_WINDOWS /GR /Z7 /RTC1 -std:c++17 -MDd /W3 /EHs-c- /wd4530 /wd4577 -Zc:__cplusplus -permissive- -utf-8 -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:externConstexpr -Zc:wchar_t -bigobj /showIncludes /Foodbc\CMakeFiles\QODBCDriverPlugin.dir\qsql_odbc.cpp.obj /Fdodbc\CMakeFiles\QODBCDriverPlugin.dir\ /FS -c C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\odbc\qsql_odbc.cpp C:\Qt\6.3.0\msvc2019_64\include\QtCore/qglobal.h(45): fatal error C1083: Nie można otworzyć pliku dołącz: 'type_traits': No such file or directory [3/10] Building CXX object sqlite\CMakeFiles\QSQLiteDriver...n.dir\QSQLiteDriverPlugin_autogen\mocs_compilation.cpp.obj FAILED: sqlite/CMakeFiles/QSQLiteDriverPlugin.dir/QSQLiteDriverPlugin_autogen/mocs_compilation.cpp.obj C:\PROGRA~1\MICROS~3\2022\COMMUN~1\VC\Tools\MSVC\1443~1.348\bin\Hostx64\x64\cl.exe /nologo /TP -DQSQLiteDriverPlugin_EXPORTS -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_EXCEPTIONS -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_PLUGIN -DQT_SQL_LIB -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_RTREE -DSQLITE_OMIT_COMPLETE -DSQLITE_OMIT_LOAD_EXTENSION -DUNICODE -DWIN32 -DWIN64 -D_CRT_SECURE_NO_WARNINGS -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_WIN64 -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite\QSQLiteDriverPlugin_autogen\include -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\include -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite\..\..\..\3rdparty\sqlite -external:IC:\Qt\6.3.0\msvc2019_64\include\QtCore -external:IC:\Qt\6.3.0\msvc2019_64\include -external:IC:\Qt\6.3.0\msvc2019_64\mkspecs\win32-msvc -external:IC:\Qt\6.3.0\msvc2019_64\include\QtCore\6.3.0 -external:IC:\Qt\6.3.0\msvc2019_64\include\QtCore\6.3.0\QtCore -external:IC:\Qt\6.3.0\msvc2019_64\include\QtSql\6.3.0 -external:IC:\Qt\6.3.0\msvc2019_64\include\QtSql\6.3.0\QtSql -external:IC:\Qt\6.3.0\msvc2019_64\include\QtSql -external:W0 /DWIN32 /D_WINDOWS /GR /Z7 /RTC1 -std:c++17 -MDd -W0 /EHs-c- /wd4530 /wd4577 -Zc:__cplusplus -permissive- -utf-8 -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:externConstexpr -Zc:wchar_t -bigobj /showIncludes /Fosqlite\CMakeFiles\QSQLiteDriverPlugin.dir\QSQLiteDriverPlugin_autogen\mocs_compilation.cpp.obj /Fdsqlite\CMakeFiles\QSQLiteDriverPlugin.dir\ /FS -c C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite\QSQLiteDriverPlugin_autogen\mocs_compilation.cpp C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite\QSQLiteDriverPlugin_autogen\EWIEGA46WW/moc_qsql_sqlite_p.cpp(9): fatal error C1083: Nie można otworzyć pliku dołącz: 'memory': No such file or directory [4/10] Building RC object sqlite\CMakeFiles\QSQLiteDriverPlugin.dir\QSQLiteDriverPlugin_resource.rc.res FAILED: sqlite/CMakeFiles/QSQLiteDriverPlugin.dir/QSQLiteDriverPlugin_resource.rc.res C:/Qt/Tools/CMake_64/bin/cmcldeps.exe RC C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite\QSQLiteDriverPlugin_resource.rc sqlite\CMakeFiles\QSQLiteDriverPlugin.dir\QSQLiteDriverPlugin_resource.rc.res.d sqlite\CMakeFiles\QSQLiteDriverPlugin.dir\QSQLiteDriverPlugin_resource.rc.res "Uwaga: w tym pliku: " "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe" C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\rc.exe -DQSQLiteDriverPlugin_EXPORTS -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_EXCEPTIONS -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_PLUGIN -DQT_SQL_LIB -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_RTREE -DSQLITE_OMIT_COMPLETE -DSQLITE_OMIT_LOAD_EXTENSION -DUNICODE -DWIN32 -DWIN64 -D_CRT_SECURE_NO_WARNINGS -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_WIN64 -I C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite\QSQLiteDriverPlugin_autogen\include -I C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite -I C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\include -I C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite\..\..\..\3rdparty\sqlite -I C:\Qt\6.3.0\msvc2019_64\include\QtCore -I C:\Qt\6.3.0\msvc2019_64\include -I C:\Qt\6.3.0\msvc2019_64\mkspecs\win32-msvc -I C:\Qt\6.3.0\msvc2019_64\include\QtCore\6.3.0 -I C:\Qt\6.3.0\msvc2019_64\include\QtCore\6.3.0\QtCore -I C:\Qt\6.3.0\msvc2019_64\include\QtSql\6.3.0 -I C:\Qt\6.3.0\msvc2019_64\include\QtSql\6.3.0\QtSql -I C:\Qt\6.3.0\msvc2019_64\include\QtSql -DWIN32 -D_DEBUG /nologo /fo sqlite\CMakeFiles\QSQLiteDriverPlugin.dir\QSQLiteDriverPlugin_resource.rc.res C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite\QSQLiteDriverPlugin_resource.rc C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite\QSQLiteDriverPlugin_resource.rc(1): fatal error C1083: Nie moÔöÉna otworzy┼á pliku doÔöéÔĽúcz: 'windows.h': No such file or directory [5/10] Building CXX object odbc\CMakeFiles\QODBCDriverPlugin.dir\main.cpp.obj FAILED: odbc/CMakeFiles/QODBCDriverPlugin.dir/main.cpp.obj C:\PROGRA~1\MICROS~3\2022\COMMUN~1\VC\Tools\MSVC\1443~1.348\bin\Hostx64\x64\cl.exe /nologo /TP -DQODBCDriverPlugin_EXPORTS -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_EXCEPTIONS -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_PLUGIN -DQT_SQL_LIB -DUNICODE -DWIN32 -DWIN64 -D_CRT_SECURE_NO_WARNINGS -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_WIN64 -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\odbc\QODBCDriverPlugin_autogen\include -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\odbc -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\include -external:I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um" -external:IC:\Qt\6.3.0\msvc2019_64\include\QtCore -external:IC:\Qt\6.3.0\msvc2019_64\include -external:IC:\Qt\6.3.0\msvc2019_64\mkspecs\win32-msvc -external:IC:\Qt\6.3.0\msvc2019_64\include\QtCore\6.3.0 -external:IC:\Qt\6.3.0\msvc2019_64\include\QtCore\6.3.0\QtCore -external:IC:\Qt\6.3.0\msvc2019_64\include\QtSql\6.3.0 -external:IC:\Qt\6.3.0\msvc2019_64\include\QtSql\6.3.0\QtSql -external:IC:\Qt\6.3.0\msvc2019_64\include\QtSql -external:W0 /DWIN32 /D_WINDOWS /GR /Z7 /RTC1 -std:c++17 -MDd /W3 /EHs-c- /wd4530 /wd4577 -Zc:__cplusplus -permissive- -utf-8 -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:externConstexpr -Zc:wchar_t -bigobj /showIncludes /Foodbc\CMakeFiles\QODBCDriverPlugin.dir\main.cpp.obj /Fdodbc\CMakeFiles\QODBCDriverPlugin.dir\ /FS -c C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\odbc\main.cpp C:\Qt\6.3.0\msvc2019_64\include\QtCore/qglobal.h(45): fatal error C1083: Nie można otworzyć pliku dołącz: 'type_traits': No such file or directory [6/10] Building C object sqlite\CMakeFiles\QSQLiteDriverPl...r\C_\Qt\6.3.0\Src\qtbase\src\3rdparty\sqlite\sqlite3.c.obj FAILED: sqlite/CMakeFiles/QSQLiteDriverPlugin.dir/C_/Qt/6.3.0/Src/qtbase/src/3rdparty/sqlite/sqlite3.c.obj C:\PROGRA~1\MICROS~3\2022\COMMUN~1\VC\Tools\MSVC\1443~1.348\bin\Hostx64\x64\cl.exe /nologo -DQSQLiteDriverPlugin_EXPORTS -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_EXCEPTIONS -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_PLUGIN -DQT_SQL_LIB -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_RTREE -DSQLITE_OMIT_COMPLETE -DSQLITE_OMIT_LOAD_EXTENSION -DUNICODE -DWIN32 -DWIN64 -D_CRT_SECURE_NO_WARNINGS -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_WIN64 -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite\QSQLiteDriverPlugin_autogen\include -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\include -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite\..\..\..\3rdparty\sqlite -external:IC:\Qt\6.3.0\msvc2019_64\include\QtCore -external:IC:\Qt\6.3.0\msvc2019_64\include -external:IC:\Qt\6.3.0\msvc2019_64\mkspecs\win32-msvc -external:IC:\Qt\6.3.0\msvc2019_64\include\QtCore\6.3.0 -external:IC:\Qt\6.3.0\msvc2019_64\include\QtCore\6.3.0\QtCore -external:IC:\Qt\6.3.0\msvc2019_64\include\QtSql\6.3.0 -external:IC:\Qt\6.3.0\msvc2019_64\include\QtSql\6.3.0\QtSql -external:IC:\Qt\6.3.0\msvc2019_64\include\QtSql -external:W0 /DWIN32 /D_WINDOWS /Z7 /RTC1 -std:c11 -MDd -W0 /EHs-c- /wd4530 /wd4577 -utf-8 -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:externConstexpr -Zc:wchar_t -bigobj /showIncludes /Fosqlite\CMakeFiles\QSQLiteDriverPlugin.dir\C_\Qt\6.3.0\Src\qtbase\src\3rdparty\sqlite\sqlite3.c.obj /Fdsqlite\CMakeFiles\QSQLiteDriverPlugin.dir\ /FS -c C:\Qt\6.3.0\Src\qtbase\src\3rdparty\sqlite\sqlite3.c C:\Qt\6.3.0\Src\qtbase\src\3rdparty\sqlite\sqlite3.c(341): fatal error C1083: Nie można otworzyć pliku dołącz: 'stdarg.h': No such file or directory [7/10] Building CXX object sqlite\CMakeFiles\QSQLiteDriverPlugin.dir\qsql_sqlite.cpp.obj FAILED: sqlite/CMakeFiles/QSQLiteDriverPlugin.dir/qsql_sqlite.cpp.obj C:\PROGRA~1\MICROS~3\2022\COMMUN~1\VC\Tools\MSVC\1443~1.348\bin\Hostx64\x64\cl.exe /nologo /TP -DQSQLiteDriverPlugin_EXPORTS -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_EXCEPTIONS -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_PLUGIN -DQT_SQL_LIB -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_RTREE -DSQLITE_OMIT_COMPLETE -DSQLITE_OMIT_LOAD_EXTENSION -DUNICODE -DWIN32 -DWIN64 -D_CRT_SECURE_NO_WARNINGS -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_WIN64 -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite\QSQLiteDriverPlugin_autogen\include -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\include -IC:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite\..\..\..\3rdparty\sqlite -external:IC:\Qt\6.3.0\msvc2019_64\include\QtCore -external:IC:\Qt\6.3.0\msvc2019_64\include -external:IC:\Qt\6.3.0\msvc2019_64\mkspecs\win32-msvc -external:IC:\Qt\6.3.0\msvc2019_64\include\QtCore\6.3.0 -external:IC:\Qt\6.3.0\msvc2019_64\include\QtCore\6.3.0\QtCore -external:IC:\Qt\6.3.0\msvc2019_64\include\QtSql\6.3.0 -external:IC:\Qt\6.3.0\msvc2019_64\include\QtSql\6.3.0\QtSql -external:IC:\Qt\6.3.0\msvc2019_64\include\QtSql -external:W0 /DWIN32 /D_WINDOWS /GR /Z7 /RTC1 -std:c++17 -MDd -W0 /EHs-c- /wd4530 /wd4577 -Zc:__cplusplus -permissive- -utf-8 -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:externConstexpr -Zc:wchar_t -bigobj /showIncludes /Fosqlite\CMakeFiles\QSQLiteDriverPlugin.dir\qsql_sqlite.cpp.obj /Fdsqlite\CMakeFiles\QSQLiteDriverPlugin.dir\ /FS -c C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\sqlite\qsql_sqlite.cpp C:\Qt\6.3.0\msvc2019_64\include\QtCore/qglobal.h(45): fatal error C1083: Nie można otworzyć pliku dołącz: 'type_traits': No such file or directory [8/10] Building RC object odbc\CMakeFiles\QODBCDriverPlugin.dir\QODBCDriverPlugin_resource.rc.res FAILED: odbc/CMakeFiles/QODBCDriverPlugin.dir/QODBCDriverPlugin_resource.rc.res C:/Qt/Tools/CMake_64/bin/cmcldeps.exe RC C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\odbc\QODBCDriverPlugin_resource.rc odbc\CMakeFiles\QODBCDriverPlugin.dir\QODBCDriverPlugin_resource.rc.res.d odbc\CMakeFiles\QODBCDriverPlugin.dir\QODBCDriverPlugin_resource.rc.res "Uwaga: w tym pliku: " "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe" C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\rc.exe -DQODBCDriverPlugin_EXPORTS -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_EXCEPTIONS -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_PLUGIN -DQT_SQL_LIB -DUNICODE -DWIN32 -DWIN64 -D_CRT_SECURE_NO_WARNINGS -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_WIN64 -I C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\odbc\QODBCDriverPlugin_autogen\include -I C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\odbc -I C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\include -I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um" -I C:\Qt\6.3.0\msvc2019_64\include\QtCore -I C:\Qt\6.3.0\msvc2019_64\include -I C:\Qt\6.3.0\msvc2019_64\mkspecs\win32-msvc -I C:\Qt\6.3.0\msvc2019_64\include\QtCore\6.3.0 -I C:\Qt\6.3.0\msvc2019_64\include\QtCore\6.3.0\QtCore -I C:\Qt\6.3.0\msvc2019_64\include\QtSql\6.3.0 -I C:\Qt\6.3.0\msvc2019_64\include\QtSql\6.3.0\QtSql -I C:\Qt\6.3.0\msvc2019_64\include\QtSql -DWIN32 -D_DEBUG /nologo /fo odbc\CMakeFiles\QODBCDriverPlugin.dir\QODBCDriverPlugin_resource.rc.res C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers\odbc\QODBCDriverPlugin_resource.rc C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um\windows.h(1): fatal error C1083: Nie moÔöÉna otworzy┼á pliku doÔöéÔĽúcz: 'winapifamily.h': No such file or directory ninja: build stopped: subcommand failed.
-
You did not open the correct visual studio command prompt so the vc env variables are not properly set up.
-
OK. So I used Visual Studio Developer Command Prompt and got different errors. I tried also PowerShell but no result. Should I install any special version for MSVC?
-
@BushyAxis793 said in How to compile QMYSQL plugin with MSVC?:
Should I install any special version for MSVC?
Why?
Start with a clean build dir from a properly set up environment and if you encounter errors, post them here. -
OK. I understand. Let me show you step by step what I do:
- Clear everything
- Open Visual Studio Developer Command Prompt
- I go to C:\mysql-8.0.28-winx64\
- I create build-sqldrivers directory
- I go to build-sqldrivers directory
- I input command:
qt-cmake -G Ninja C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=C:\Qt\Tools\CMake_64\bin -DMySQL_ROOT="C:\mysql-8.0.28-winx64\mysql-8.0.28-winx64"
And I got error
-
Hostx86/x86/
You opened the wrong visual studio command prompt. Qt is built with 64bits...
-
OK. So I run again Visual Studio Command Prompt and check configuration with:
C:\Users\mnawr\source\repos\Project2>echo %VSCMD_ARG_TGT_ARCH% x86
Then I change to x64 with:
set VSCMD_ARG_TGT_ARCH=x64
And check again:
C:\Users\mnawr\source\repos\Project2>echo %VSCMD_ARG_TGT_ARCH% x64
And again create build-sqldrivers directory, run qt-cmake.. and got the error again:
-
Please open the correct visual studio command prompt for 64 bits... is it really that hard?
-
OK. I used x64 Native Tools Command Prompt for VS 2022 and my result is:
********************************************************************** ** Visual Studio 2022 Developer Command Prompt v17.13.5 ** Copyright (c) 2022 Microsoft Corporation ********************************************************************** [vcvarsall.bat] Environment initialized for: 'x64' C:\Program Files\Microsoft Visual Studio\2022\Community>cd C:\mysql-8.0.28-winx64 C:\mysql-8.0.28-winx64>mkdir build-sqldrivers C:\mysql-8.0.28-winx64>cd build-sqldrivers C:\mysql-8.0.28-winx64\build-sqldrivers>qt-cmake -G Ninja C:\Qt\6.3.0\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=C:\Qt\Tools\CMake_64\bin -DMySQL_ROOT="C:\mysql-8.0.28-winx64\mysql-8.0.28-winx64" -- The CXX compiler identification is MSVC 19.43.34809.0 -- The C compiler identification is MSVC 19.43.34809.0 -- The ASM compiler identification is MSVC -- Found assembler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe - skipped -- Detecting C compile features -- Detecting C compile features - done -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - not found -- Found Threads: TRUE -- Performing Test HAVE_STDATOMIC -- Performing Test HAVE_STDATOMIC - Success -- Found WrapAtomic: TRUE -- Configuring done (9.9s) -- Generating done (0.6s) -- Build files have been written to: C:/mysql-8.0.28-winx64/build-sqldrivers C:\mysql-8.0.28-winx64\build-sqldrivers>cmake --build . [22/22] Linking CXX shared module plugins\sqldrivers\qsqlmysqld.dll C:\mysql-8.0.28-winx64\build-sqldrivers>cmake --install . -- Install configuration: "Debug" -- Installing: C:/Qt/Tools/CMake_64/bin/lib/cmake/Qt6Sql/Qt6QMYSQLDriverPluginConfig.cmake -- Installing: C:/Qt/Tools/CMake_64/bin/lib/cmake/Qt6Sql/Qt6QMYSQLDriverPluginConfigVersion.cmake -- Installing: C:/Qt/Tools/CMake_64/bin/lib/cmake/Qt6Sql/Qt6QMYSQLDriverPluginConfigVersionImpl.cmake -- Installing: C:/Qt/Tools/CMake_64/bin/./plugins/sqldrivers/qsqlmysqld.dll -- Installing: C:/Qt/Tools/CMake_64/bin/lib/cmake/Qt6Sql/Qt6QMYSQLDriverPluginTargets.cmake -- Installing: C:/Qt/Tools/CMake_64/bin/lib/cmake/Qt6Sql/Qt6QMYSQLDriverPluginTargets-debug.cmake -- Installing: C:/Qt/Tools/CMake_64/bin/./plugins/sqldrivers/qsqlmysqld.pdb -- Installing: C:/Qt/Tools/CMake_64/bin/lib/cmake/Qt6Sql/Qt6QMYSQLDriverPluginAdditionalTargetInfo.cmake -- Installing: C:/Qt/Tools/CMake_64/bin/lib/cmake/Qt6Sql/Qt6QODBCDriverPluginConfig.cmake -- Installing: C:/Qt/Tools/CMake_64/bin/lib/cmake/Qt6Sql/Qt6QODBCDriverPluginConfigVersion.cmake -- Installing: C:/Qt/Tools/CMake_64/bin/lib/cmake/Qt6Sql/Qt6QODBCDriverPluginConfigVersionImpl.cmake -- Installing: C:/Qt/Tools/CMake_64/bin/./plugins/sqldrivers/qsqlodbcd.dll -- Installing: C:/Qt/Tools/CMake_64/bin/lib/cmake/Qt6Sql/Qt6QODBCDriverPluginTargets.cmake -- Installing: C:/Qt/Tools/CMake_64/bin/lib/cmake/Qt6Sql/Qt6QODBCDriverPluginTargets-debug.cmake -- Installing: C:/Qt/Tools/CMake_64/bin/./plugins/sqldrivers/qsqlodbcd.pdb -- Installing: C:/Qt/Tools/CMake_64/bin/lib/cmake/Qt6Sql/Qt6QODBCDriverPluginAdditionalTargetInfo.cmake -- Installing: C:/Qt/Tools/CMake_64/bin/lib/cmake/Qt6Sql/Qt6QSQLiteDriverPluginConfig.cmake -- Installing: C:/Qt/Tools/CMake_64/bin/lib/cmake/Qt6Sql/Qt6QSQLiteDriverPluginConfigVersion.cmake -- Installing: C:/Qt/Tools/CMake_64/bin/lib/cmake/Qt6Sql/Qt6QSQLiteDriverPluginConfigVersionImpl.cmake -- Installing: C:/Qt/Tools/CMake_64/bin/./plugins/sqldrivers/qsqlited.dll -- Installing: C:/Qt/Tools/CMake_64/bin/lib/cmake/Qt6Sql/Qt6QSQLiteDriverPluginTargets.cmake -- Installing: C:/Qt/Tools/CMake_64/bin/lib/cmake/Qt6Sql/Qt6QSQLiteDriverPluginTargets-debug.cmake -- Installing: C:/Qt/Tools/CMake_64/bin/./plugins/sqldrivers/qsqlited.pdb -- Installing: C:/Qt/Tools/CMake_64/bin/lib/cmake/Qt6Sql/Qt6QSQLiteDriverPluginAdditionalTargetInfo.cmake C:\mysql-8.0.28-winx64\build-sqldrivers>
I can't see any error but when I go to C:\mysql-8.0.28-winx64\build-sqldrivers\plugins\sqldrivers
I expected qsqlmysql.dll instead of qsqlmysqld.dll.
-
You have to build debug and release libs (msvc is picky here)
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_BUILD_TYPE=Debug
Debug was already built.