Dodawanie pluginu QMySQL do Qt Creator MacOS Ventura 13.5

0

Dzień dobry. Trzy dni temu zmieniłem Windows na macOS. Zainstalowałem Qt Creator, MySQL oraz Xampp. Na koniec załadowałem swój projekt z windows 11. Oczywiście przy próbie uruchomienia pojawił się problem z pługiem QMySQL. Postanowiłem dodać plugin podobnie jak w przypadku wersji na windows 11. Posiłkowałem się tym wątkiem:

https://stackoverflow.com/questions/73908494/qmysql-driver-not-loaded-on-mac-os-for-mac-m1-m2-users/73908495

Niestety po zainstalowaniu pluginu błąd nadal występuje Poniżej wrzucam moją strukturę folderów

screenshot-20230522203312.png

Nie wiem dlaczego błąd nadal występuje skoro plugin został dodany do odpowiedniego folderu. Jakieś sugestie? Pozdrawiam

Błąd:

QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC QPSQL

EDIT:

Poniżej wstawiam kolejne kroki:

  1. Za pomocą Qt Maintance Tool dodałem "Sources"

  2. Zainstalowałem Homebrew i zainstalowałem ninja

  3. Za pośrednictwem terminala przeniosłem się do

     cd /Users/mikolajnawrocki/Qt/6.5.0/Src
    
  4. Następnie uruchomiłem komendę:

    ./configure -sql-mysql -- -DCMAKE_INCLUDE_PATH="/usr/local/mysql/include" -DCMAKE_LIBRARY_PATH="/usr/local/mysql/lib"
    
  5. Następnie przeniosłem się do

     cd /Users/mikolajnawrocki/Qt/6.5.0/macos/plugins/sqldrivers
    
  6. Następnie utworzyłem folder build_sqldrivers

    mkdir build_sqldrivers
    
    1. Pózniej po wejściu do folderu uruchomiłem komendę:
    /Users/mikolajnawrocki/Qt/6.5.0/macos/bin/qt-cmake -G Ninja /Users/mikolajnawrocki/Qt/6.5.0/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Users/mikolajnawrocki/Qt/6.5.0/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib" -DCMAKE_OSX_ARCHITECTURES="arm64"
    
    1. Następnie uruchomiłem komendę:
    sed -i -e 's/-arch arm64/-arch arm64/g' /Users/mikolajnawrocki/Qt/6.5.0/macos/plugins/sqldrivers/build_sqldrivers/build.ninja
    
    1. Później buduje cmake
    cmake --build .
    
    1. Instaluje cmake
    cmake --install .
    
    1. Znajduje libqsqlmysql.dylib
      find ~/Qt -name libqsqlmysql.dylib
      
  7. Przenoszę do folderu sqldrivers

    /Users/mikolajnawrocki/Qt/6.5.0/macos/plugins/sqldrivers
    

    Uruchamiam Qt Creator i pojawia się błąd:

    screenshot-20230523205129.png
    Przy czym pierwszy błąd dotyczy czcionki której nie mam zainstalowanej na tym komputerze, a ostatnie 4 to są po prostu qDebug() z kursami walut.

0

Postanowiłem usunąć całkowicie Homebrew wraz ze wszystkim co zostało przy jego pomocy zainstalowane. Następnie odinstalowałem Qt Creator i zainstalowałem Qt w wersji takiej jak miałem na starym komputerze z Win 11:

Qt Creator 10.0.1
Qt 6.3.0
Sources
CMake 3.24.2
Ninja 1.10.2

Niestety po rozpoczęciu pracy z Terminalem dostaje błąd dotyczący cmake:

mikolajnawrocki@MacBook-Pro-Mikoaj Src % cd /Users/mikolajnawrocki/Qt/6.3.0/Src
mikolajnawrocki@MacBook-Pro-Mikoaj Src % ./configure -sql-mysql -- -DCMAKE_INCLUDE_PATH="/usr/local/mysql/include" -DCMAKE_LIBRARY_PATH="/usr/local/mysql/lib"
+ mkdir -p qtbase
+ cd qtbase
+ exec /Users/mikolajnawrocki/Qt/6.3.0/Src/qtbase/configure -top-level -sql-mysql -- -DCMAKE_INCLUDE_PATH=/usr/local/mysql/include -DCMAKE_LIBRARY_PATH=/usr/local/mysql/lib
/Users/mikolajnawrocki/Qt/6.3.0/Src/qtbase/configure: line 267: cmake: command not found
mikolajnawrocki@MacBook-Pro-Mikoaj Src % 

Jakieś pomysły? Pozdrawiam.

0

cmake: command not found

zainstalowanie cmake nie powoduje z automatu dodanie do PATH

opcje:
wyklikać dodatkowy PATH
albo w CMD set PATH=%PATH%;<DODATKOWY KALTALOG do CMAKE>

0
Marius.Maximus napisał(a):

cmake: command not found

zainstalowanie cmake nie powoduje z automatu dodanie do PATH

opcje:
wyklikać dodatkowy PATH
albo w CMD set PATH=%PATH%;<DODATKOWY KALTALOG do CMAKE>

Dodałem cmake do Path za pomocą:

export PATH=$PATH:/Users/mikolajnawrocki/Qt/Tools/CMake
touch .zshrc

nano .zshrc

export PATH=$PATH:/Users/mikolajnawrocki/Qt/Tools/CMake

^+O

return

^+X

Po wpisaniu echo $PATH otrzymuje

/opt/local/bin:/opt/local/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/mysql-8.0.33-macos13-arm64/bin:/Users/mikolajnawrocki/Qt/Tools/CMake:/Users/mikolajnawrocki/Qt/Tools/CMake

Niestety przy próbie uruchomienia

./configure -sql-mysql -- -DCMAKE_INCLUDE_PATH="/usr/local/mysql/include" -DCMAKE_LIBRARY_PATH="/usr/local/mysql/lib"

Otrzymuje

+ mkdir -p qtbase
+ cd qtbase
+ exec /Users/mikolajnawrocki/Qt/6.3.0/Src/qtbase/configure -top-level -sql-mysql -- -DCMAKE_INCLUDE_PATH=/usr/local/mysql/include -DCMAKE_LIBRARY_PATH=/usr/local/mysql/lib
/Users/mikolajnawrocki/Qt/6.3.0/Src/qtbase/configure: line 267: cmake: command not found

O co może chodzić? Żle wprowadziłem Path czy coś innego?

0

A sprawdzileś czy w folderze /Users/mikolajnawrocki/Qt/Tools/CMake jest program cmake ?
sprawdz to https://stackoverflow.com/questions/30668601/installing-cmake-command-line-tools-on-a-mac#47101578

0
Marius.Maximus napisał(a):

A sprawdzileś czy w folderze /Users/mikolajnawrocki/Qt/Tools/CMake jest program cmake ?

W katalogu jest co prawda Cmake.app ale nie bardzo jest widoczne. W każdym razie odpaliłem środkową komendę z twojego linku i przeszło. Następnie przeszedłem do folderu

/Users/mikolajnawrocki/Qt/6.3.0/macos/plugins/sqldrivers

Tam utworzyłem build_sqldrivers i po wejściu do niego uruchomiłem:

/Users/mikolajnawrocki/Qt/6.3.0/macos/bin/qt-cmake -G Ninja /Users/mikolajnawrocki/Qt/6.3.0/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Users/mikolajnawrocki/Qt/6.3.0/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib" -DCMAKE_OSX_ARCHITECTURES="arm64"

Otrzymałem:

CMake Error: CMake was unable to find a build program corresponding to "Ninja".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMAKE_ASM_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!

Czyżby coś z Ninja?

0

Pobrałem ninja stąd: https://github.com/ninja-build/ninja/releases

I uruchomiłem. Otrzymałem:

Last login: Thu May 25 12:45:00 on ttys002
mikolajnawrocki@MacBook-Pro-Mikoaj ~ % /Users/mikolajnawrocki/Downloads/ninja ; exit;
ninja: error: loading 'build.ninja': No such file or directory

Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[Proces zakończony]
0

Krok po kroku, krok po kroczku !
Teraz brakuje ninja w PATH ;)
Z tego co widać po bledach na etapie uruchamiania cmake musi być ninja w PATH

mozesz na szybko skopiowac do folderu gdzie masz cmake

0
Marius.Maximus napisał(a):

Krok po kroku, krok po kroczku !
Teraz brakuje ninja w PATH ;)
Z tego co widać po bledach na etapie uruchamiania cmake musi być ninja w PATH

mozesz na szybko skopiowac do folderu gdzie masz cmake

Zainstalowałem ninja przez Homebrew i dodałem do Path:

##
# Your previous /Users/mikolajnawrocki/.zprofile file was backed up as /Users/m$
##

# MacPorts Installer addition on 2023-05-20_at_08:46:24: adding an appropriate $
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
# Finished adapting your PATH environment variable for use with MacPorts.


# MacPorts Installer addition on 2023-05-20_at_08:46:24: adding an appropriate $
export MANPATH="/opt/local/share/man:$MANPATH"
# Finished adapting your MANPATH environment variable for use with MacPorts.

export PATH=${PATH}:/usr/local/mysql-8.0.33-macos13-arm64/bin


eval "$(/opt/homebrew/bin/brew shellenv)"

Po uruchomieniu :

./configure -sql-mysql -- -DCMAKE_INCLUDE_PATH="/usr/local/mysql/include" -DCMAKE_LIBRARY_PATH="/usr/local/mysql/lib"

Dostałem

CMake Error: Error: generator : Ninja
Does not match the generator used previously: Unix Makefiles
Either remove the CMakeCache.txt file and CMakeFiles directory or choose a different binary directory.
CMake Error at qtbase/cmake/QtProcessConfigureArgs.cmake:963 (message):
  CMake exited with code 1.

Cmake mam zainstalowany w sposób który podałeś w linku, a ninja za pomocą Homebrew. Może to powodować problemy?

0

oczyść folder w ktorym budujesz
usuń CMakeCache.txt i folder CMakeFiles

0

Folder wyczyszczony. Odpalam procedury po kolei raz jeszcze. Rezultat:

+ mkdir -p qtbase
+ cd qtbase
+ exec /Users/mikolajnawrocki/Qt/6.3.0/Src/qtbase/configure -top-level -sql-mysql -- -DCMAKE_INCLUDE_PATH=/usr/local/mysql/include -DCMAKE_LIBRARY_PATH=/usr/local/mysql/lib
'/Applications/CMake.app/Contents/bin/cmake' '-DCMAKE_INCLUDE_PATH=/usr/local/mysql/include' '-DCMAKE_LIBRARY_PATH=/usr/local/mysql/lib' '-DINPUT_sql_mysql=yes' '-G' 'Ninja' '/Users/mikolajnawrocki/Qt/6.3.0/Src'
CMake Error: Error: generator : Ninja
Does not match the generator used previously: Unix Makefiles
Either remove the CMakeCache.txt file and CMakeFiles directory or choose a different binary directory.
CMake Error at qtbase/cmake/QtProcessConfigureArgs.cmake:963 (message):
  CMake exited with code 1.
0

Dziękuję wszystkim za pomoc. Problem udało się rozwiązać. Temat do zamknięcia.

1

Warto by było podać rozwiązanie bo może komuś pomoże w przeszłości , albo choć chatGPT się trochę podszkoli :D

1
Marius.Maximus napisał(a):

Warto by było podać rozwiązanie bo może komuś pomoże w przeszłości , albo choć chatGPT się trochę podszkoli :D

Jestem jak najbardziej za! Poniżej podaje link do dłuższej wersji rozwiązania problemu ( którą polecam).

https://forum.qt.io/topic/145243/added-qmysql-plugin-to-qt-creator-project-on-macos-ventura-13-4?_=1685131569848

Poniżej wersja skrócona

https://forum.qt.io/topic/136231/mysql-plugin-on-m1-mac/10?_=1684570499184

A tutaj trochę moich wypocin :)

Zacznijmy od tego, że aby za cokolwiek się brać jeśli chodzi o dodawanie plugina QMySQL trzeba zrobić kilka rzeczy:

  1. Pobrać Qt Creator (mój w wersji 6.5.0)

  2. Podczas instalacji zaznaczyć oprócz wersji macOS również Sources

  3. Następnie pobrać MySQL z tej strony: https://dev.mysql.com/downloads/mysql/ w wersji arm64

    Jeżeli powyższe kroki zostały wykonane to możemy zaczynać.

  4. Pobieramy Ninja za pomocą Homebrew

  5. Następnie odpalamy Terminal i wpisujemy

    cd /Users/mikolajnawrocki/Qt/6.5.0/Src
    
  6. Następnie wpisujemy

    ./configure -sql-mysql -- -DCMAKE_INCLUDE_PATH="/usr/local/mysql/include" -DCMAKE_LIBRARY_PATH="/usr/local/mysql/lib"
    
  7. Przechodzimy do

    cd /Users/mikolajnawrocki/Qt/6.5.0/macos/plugins/sqldrivers
    
  8. Później tworzymy nowy folder i wchodzimy do niego

mikolajnawrocki@MacBook-Pro-Mikoaj sqldrivers % mkdir   build_sqldrivers
mikolajnawrocki@MacBook-Pro-Mikoaj sqldrivers % cd build_sqldrivers
  1. Następnie wpisujemy
    /Users/mikolajnawrocki/Qt/6.5.0/macos/bin/qt-cmake -G Ninja  /Users/mikolajnawrocki/Qt/6.5.0/Src/qtbase/src/plugins/sqldrivers -DCMAKE_INSTALL_PREFIX=/Users/mikolajnawrocki/Qt/6.5.0/macos -DMySQL_INCLUDE_DIR="/usr/local/mysql/include" -DMySQL_LIBRARY="/usr/local/mysql/lib/libmysqlclient.dylib" -DCMAKE_OSX_ARCHITECTURES="arm64"
    
  2. Potem wklepujemy
    sed -i -e 's/-arch x86_64/-arch arm64/g' /Users/mikolajnawrocki/Qt/6.5.0/macos/plugins/sqldrivers/build_sqldrivers/build.ninja 
    
  3. Jeżeli wszystko poszło gładko to budujemy cmake
    cmake --build .
    
  4. I Instalujemy
    cmake --install .
    
```
  1. Na sam koniec kopiujemy libqsqlmysql.dylib z build_sqldrivers do sqldrivers. Odpalamy projekt i sprawdzamy czy działa.

Mała uwaga po każdym (nieudanym) zbudowaniu pluginu warto odinstalować folder Sources i raz jeszcze go dodać.

Mam nadzieje, że któreś z podanych przeze mnie rozwiązań się przyda. Miłego dnia :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1