Mysql drivers built but qt can not find them
-
Hi, just try your qt-cmake command again, but this put this at the end:
-DCMAKE_OSX_ARCHITECTURES="arm64"
@hskoglund
I still get the same resultld: warning: ignoring file '/usr/local/mysql-8.3.0-macos14-arm64/lib/libmysqlclient.23.dylib': found architecture 'arm64', required architecture 'x86_64'
-
You need to nuke (delete) the previous build/directory
or do a new download and then try qt-cmake again (with -DCMAKE_OSX_ARCHITECTURES="arm64" added at the end)@hskoglund If I do understand you correctly I had done it before running the command as the files built were easy to track
Ignore the directory where I build as I overkill the whole process for no reason
I did try to build in another directory but without success
-
Here's how I built MySQL (some time ago :-) using Homebrew
Download Qt sources in ~/Downloads then do these commands:brew install mysql cd ~/Downloads/qt-everywhere-src-6.7.0/qtbase/src/plugins/sqldrivers ~/Qt/6.7.0/macos/bin/qt-cmake -DMySQL_LIBRARY=/usr/local/opt/mysql/lib/libmysqlclient.dylib -DMySQL_INCLUDE_DIR=/usr/local/opt/mysql/include/mysql -DCMAKE_OSX_ARCHITECTURES="arm64" . make
-
Here's how I built MySQL (some time ago :-) using Homebrew
Download Qt sources in ~/Downloads then do these commands:brew install mysql cd ~/Downloads/qt-everywhere-src-6.7.0/qtbase/src/plugins/sqldrivers ~/Qt/6.7.0/macos/bin/qt-cmake -DMySQL_LIBRARY=/usr/local/opt/mysql/lib/libmysqlclient.dylib -DMySQL_INCLUDE_DIR=/usr/local/opt/mysql/include/mysql -DCMAKE_OSX_ARCHITECTURES="arm64" . make
@hskoglund
It was the same way I built the driver for 6.2 but still not workingcd ~/Downloads/qt-everywhere-src-6.7.0/qtbase/src/plugins/sqldrivers boyankiovtorov@Boyans-MacBook-Air sqldrivers % ~/Qt/6.7.0/macos/bin/qt-cmake -DMySQL_LIBRARY=/opt/homebrew/opt/mysql/lib/libmysqlclient.dylib -DMySQL_INCLUDE_DIR=/opt/homebrew/opt/mysql/include/mysql -DCMAKE_OSX_ARCHITECTURES="arm64" .
it gives a warning that ninja is recommended
CMake Warning at /Users/boyankiovtorov/Qt/6.7.0/macos/lib/cmake/Qt6/QtBuildHelpers.cmake:12 (message): The officially supported CMake generator for building Qt is Ninja / Ninja Multi-Config. You are using: 'Unix Makefiles' instead. Thus, you might encounter issues. Use at your own risk. Call Stack (most recent call first): /Users/boyankiovtorov/Qt/6.7.0/macos/lib/cmake/Qt6/QtBuildHelpers.cmake:381 (qt_internal_validate_cmake_generator) /Users/boyankiovtorov/Qt/6.7.0/macos/lib/cmake/Qt6/QtBuild.cmake:4 (qt_internal_setup_build_and_global_variables) /Users/boyankiovtorov/Qt/6.7.0/macos/lib/cmake/Qt6/QtSetup.cmake:6 (include) /Users/boyankiovtorov/Qt/6.7.0/macos/lib/cmake/Qt6/QtBuildRepoHelpers.cmake:21 (include) /Users/boyankiovtorov/Qt/6.7.0/macos/lib/cmake/Qt6/QtBuildRepoHelpers.cmake:112 (qt_build_internals_set_up_private_api) CMakeLists.txt:26 (qt_prepare_standalone_project)
but the error is still the same
[ 41%] Linking CXX shared module ../plugins/sqldrivers/libqsqlmysql.dylib ld: warning: ignoring file '/opt/homebrew/Cellar/mysql/8.3.0_1/lib/libmysqlclient.23.dylib': found architecture 'arm64', required architecture 'x86_64'
-
If you check the MySql dll with file, e.g.:
file /opt/homebrew/opt/mysql/lib/libmysqlclient.dylib
If it says "x86_64" then you need to download/install a dylib/dll with the same name but has the architecture "arm64"
@hskoglund It is arm64
/opt/homebrew/opt/mysql/lib/libmysqlclient.dylib: Mach-O 64-bit dynamically linked shared library arm64
-
-
Hi, found it: https://forum.qt.io/topic/136231/mysql-plugin-on-m1-mac/10
Adding -DCMAKE_OSX_ARCHITECTURES="arm64" has not been sufficient for a looong time.
The good news is that for Qt 6.7.0 it's slightly easier. Anyway there are two things that has be fixed: build with Nnja and manually edit the Ninja build file before issuing the cmake --build .
So the qt-cmake command should be:
~/Qt/6.7.0/macos/bin/qt-cmake -GNinja -DMySQL_LIBRARY=/opt/homebrew/opt/mysql/lib/libmysqlclient.dylib -DMySQL_INCLUDE_DIR=/opt/homebrew/opt/mysql/include/mysql -DCMAKE_OSX_ARCHITECTURES="arm64" .Once it's done, do this magic command:
sed -i -e 's/-arch x86_64/-arch arm64/g' build.ninja
Then proceed with the usual:
cmake --build .
Don't forget to nuke the sqldrivers directory first :-)
-
Hi, found it: https://forum.qt.io/topic/136231/mysql-plugin-on-m1-mac/10
Adding -DCMAKE_OSX_ARCHITECTURES="arm64" has not been sufficient for a looong time.
The good news is that for Qt 6.7.0 it's slightly easier. Anyway there are two things that has be fixed: build with Nnja and manually edit the Ninja build file before issuing the cmake --build .
So the qt-cmake command should be:
~/Qt/6.7.0/macos/bin/qt-cmake -GNinja -DMySQL_LIBRARY=/opt/homebrew/opt/mysql/lib/libmysqlclient.dylib -DMySQL_INCLUDE_DIR=/opt/homebrew/opt/mysql/include/mysql -DCMAKE_OSX_ARCHITECTURES="arm64" .Once it's done, do this magic command:
sed -i -e 's/-arch x86_64/-arch arm64/g' build.ninja
Then proceed with the usual:
cmake --build .
Don't forget to nuke the sqldrivers directory first :-)
@hskoglund
That worked! Thank you so much. -
H hskoglund referenced this topic on
-
-
H hskoglund referenced this topic on