Unsolved macOS Big Sur and Database driver
-
@SPlatten Google says sybfront.h belongs to freetds. So, I guess you need to install freetds first.
-
@jsulm , I have already the last time I built a database driver for an earlier version of Qt:
brew info freetds freetds: stable 1.2.18 (bottled), HEAD Libraries to talk to Microsoft SQL Server and Sybase databases https://www.freetds.org/ /usr/local/Cellar/freetds/1.2.17 (1,259 files, 13.8MB) * Poured from bottle on 2020-12-17 at 10:59:11 From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/freetds.rb License: LGPL-2.0-or-later ==> Dependencies Build: pkg-config ✔ Required: openssl@1.1 ✔, unixodbc ✔ ==> Options --HEAD Install HEAD version ==> Analytics install: 65,640 (30 days), 275,256 (90 days), 868,455 (365 days) install-on-request: 12,025 (30 days), 48,740 (90 days), 118,945 (365 days) build-error: 0 (30 days)
-
@SPlatten So, do you have sybfront.h somewhere?
-
@jsulm , yes, this is exactly the path I went down when I got the message:
find / -name sybfront.h /usr/local/include/sybfront.h /usr/local/Cellar/freetds/1.2.17/include/sybfront.h
-
@SPlatten said in macOS Big Sur and Database driver:
/usr/local/include
This include directory is not checked by default when building. You will need to add it as additional include directory. And the dir containing the actual lib also needs to be added as additional libs dir.
-
@jsulm , I think that's a symbolic link.
ls -la sybfront.h lrwxr-xr-x 1 sy admin 43 17 Dec 10:59 sybfront.h -> ../Cellar/freetds/1.2.17/include/sybfront.h
-
@SPlatten Doesn't matter. You have to tell the compiler where to look for the headers (and the linker where to look for the libs) if those are not in system include dirs.
-
@jsulm thank you, I know how to do this on a PC, how do I do that on a MAC?
-
@SPlatten Should be the same on MAC (is a UNIX)
-
@jsulm , I'm trying to add the library to the project, by selecting the Add Library... option from the project context menu, but I cannot or don't know how to navigate to the path as /usr/local doesn't appear to be available.
-
@SPlatten said in macOS Big Sur and Database driver:
Add Library...
?
Aren't you building MySQL driver on the command line? How is "Add Library..." related to this? -
@jsulm , yes, sorry, you are quite correct.
-
@jsulm , I added:
INCLUDEPATH += /usr/local/include
To sqldrivers.pro and removed all the config:
rm -R config.*
Then ran:
$QTDIRBIN/qmake -- MYSQL_INCDIR="/usr/local/Cellar/mariadb/10.5.8/include/mysql" "MYSQL_LIBDIR=/usr/local/Cellar/mariadb/10.5.8/lib" MYSQL_LIBS="-lmariadb" make make install
config.log still shows:
> main.cpp:2:10: fatal error: 'sybfront.h' file not found > #include <sybfront.h> > ^~~~~~~~~~~~ > 1 error generated. > make: *** [main.o] Error 1 => source failed verification. test config.sqldrivers.libraries.tds FAILED
-
@SPlatten From a clean state (no build artefacts from previous attempt)?
-
@jsulm , can you elaborate please?
-
@SPlatten You already tried to build before, right? That means there are build artefacts (like object files, Makefile, ...). You should make sure you delete all these build artefacts before trying again...
Even better are out-of-source builds (create a build folder, go there and call qmake from there). -
@jsulm I just did:
make clean
From:
/Users/sy/Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers
Result was:
rm -f .moc/moc_predefs.h rm -f .moc/moc_qsql_mysql_p.cpp rm -f .moc/main.moc rm -f .obj/qsql_mysql.o .obj/main.o .obj/moc_qsql_mysql_p.o rm -f *~ core *.core cd sqlite/ && ( test -e Makefile || /Users/sy/Qt/5.15.2/clang_64/bin/qmake -o Makefile /Users/sy/Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/sqlite/sqlite.pro ) && /Applications/Xcode.app/Contents/Developer/usr/bin/make -f Makefile clean rm -f .moc/moc_predefs.h rm -f .moc/moc_qsql_sqlite_p.cpp rm -f .moc/smain.moc rm -f .obj/qsql_sqlite.o .obj/smain.o .obj/sqlite3.o .obj/moc_qsql_sqlite_p.o rm -f *~ core *.core
Then rerun:
$QTDIRBIN/qmake -- MYSQL_INCDIR="/usr/local/Cellar/mariadb/10.5.8/include/mysql" "MYSQL_LIBDIR=/usr/local/Cellar/mariadb/10.5.8/lib" MYSQL_LIBS="-lmariadb" make make install
And waited for build to finish. Same result, log file still reports:
> Project WARNING: Qt has only been tested with version 10.15 of the platform SDK, you're using 11.1. > Project WARNING: This is an unsupported configuration. You may experience build issues, and by using > Project WARNING: the 11.1 SDK you are opting in to new features that Qt has not been prepared for. > Project WARNING: Please downgrade the SDK you use to build your app to version 10.15, or configure > Project WARNING: with CONFIG+=sdk_no_version_check when running qmake to silence this warning. + cd /Users/sy/Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/config.tests/tds && MAKEFLAGS= make > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -pipe -stdlib=libc++ -O2 -std=gnu++11 -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk -mmacosx-version-min=10.13 -w -fPIC -I. -I/usr/local/opt/openssl/include -I/Users/sy/Qt/5.15.2/clang_64/mkspecs/macx-clang -o main.o main.cpp > main.cpp:2:10: fatal error: 'sybfront.h' file not found > #include <sybfront.h> > ^~~~~~~~~~~~ > 1 error generated. > make: *** [main.o] Error 1 => source failed verification. test config.sqldrivers.libraries.tds FAILED
-
@SPlatten said in macOS Big Sur and Database driver:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -pipe -stdlib=libc++ -O2 -std=gnu++11 -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk -mmacosx-version-min=10.13 -w -fPIC -I. -I/usr/local/opt/openssl/include -I/Users/sy/Qt/5.15.2/clang_64/mkspecs/macx-clang -o main.o main.cpp
According to this compiler invocation /usr/local/include was not passed as additional include directory...
-
@jsulm I tried adding another symbolic link to the sqldrivers folder, still same result, where did your output come from?
-
@SPlatten said in macOS Big Sur and Database driver:
where did your output come from?
It's the output you posted...