Solved Error while compiling Qt from source - use of undeclared identifier 'QOAuth1Signature'
-
Hello! I'm trying to build Qt from source and I'm running into an error about 3 hours into the build (See end for error)
I am compiling on Ubuntu (Windows Linux Subsystem) following the instructions here and here.
The exact commands I ran were:
mkdir qt cd qt git clone git://code.qt.io/qt/qt5.git cd qt5 git checkout 5.15.0 perl init-repository --module-subset=default,-qtwebengine cd .. mkdir build cd build ../qt5/configure -xplatform wasm-emscripten -opensource -nomake examples -prefix $PWD/qtbase make
And here is the error I am getting:
em++ -c -Xclang -include-pch -Xclang .pch/Qt5NetworkAuth.pch/c++.pch -pipe -O2 -std=c++1z -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -s ALLOW_MEMORY_GROWTH=1 -Wall -Wextra -Wdate-time -Winconsistent-missing-override -DQT_NO_LINKED_LIST -DQT_NO_FOREACH -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_LINKED_LIST -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_BUILD_NETWORKAUTH_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_NETWORK_LIB -DQT_CORE_LIB -I/mnt/s/qt/qt5/qtnetworkauth/src/oauth -I. -I/mnt/s/qt/build/qtbase/include -I/mnt/s/qt/build/qtbase/include/QtNetworkAuth -I/mnt/s/qt/build/qtbase/include/QtNetworkAuth/5.15.0 -I/mnt/s/qt/build/qtbase/include/QtNetworkAuth/5.15.0/QtNetworkAuth -I/mnt/s/qt/build/qtbase/include/QtCore/5.15.0 -I/mnt/s/qt/build/qtbase/include/QtCore/5.15.0/QtCore -I/mnt/s/qt/build/qtbase/include/QtNetwork -I/mnt/s/qt/build/qtbase/include/QtCore -I.moc -I/mnt/s/qt/qt5/qtbase/mkspecs/wasm-emscripten -o .obj/qoauth1signature.o /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp In file included from /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp:31: /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature_p.h:57:46: error: use of undeclared identifier 'QOAuth1Signature' QOAuth1SignaturePrivate(const QUrl &url, QOAuth1Signature::HttpRequestMethod method, ^ /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature_p.h:68:5: error: use of undeclared identifier 'QOAuth1Signature' QOAuth1Signature::HttpRequestMethod method = QOAuth1Signature::HttpRequestMethod::Post; ^ /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp:85:32: error: use of undeclared identifier 'QOAuth1Signature' static_assert(static_cast<int>(QOAuth1Signature::HttpRequestMethod::Head) == ^ /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp:87:32: error: use of undeclared identifier 'QOAuth1Signature' static_cast<int>(QOAuth1Signature::HttpRequestMethod::Get) == ^ /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp:89:32: error: use of undeclared identifier 'QOAuth1Signature' static_cast<int>(QOAuth1Signature::HttpRequestMethod::Put) == ^ /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp:91:32: error: use of undeclared identifier 'QOAuth1Signature' static_cast<int>(QOAuth1Signature::HttpRequestMethod::Post) == ^ /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp:93:32: error: use of undeclared identifier 'QOAuth1Signature' static_cast<int>(QOAuth1Signature::HttpRequestMethod::Delete) == ^ /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp:100:50: error: use of undeclared identifier 'QOAuth1Signature' QOAuth1Signature::HttpRequestMethod method, ^ /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp:114:10: error: use of undeclared identifier 'QOAuth1Signature' case QOAuth1Signature::HttpRequestMethod::Head: ^ /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp:117:10: error: use of undeclared identifier 'QOAuth1Signature' case QOAuth1Signature::HttpRequestMethod::Get: ^ /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp:120:10: error: use of undeclared identifier 'QOAuth1Signature' case QOAuth1Signature::HttpRequestMethod::Put: ^ /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp:123:10: error: use of undeclared identifier 'QOAuth1Signature' case QOAuth1Signature::HttpRequestMethod::Post: ^ /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp:126:10: error: use of undeclared identifier 'QOAuth1Signature' case QOAuth1Signature::HttpRequestMethod::Delete: ^ /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp:129:10: error: use of undeclared identifier 'QOAuth1Signature' case QOAuth1Signature::HttpRequestMethod::Custom: ^ /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp:194:1: error: use of undeclared identifier 'QOAuth1Signature' QOAuth1Signature::QOAuth1Signature(const QUrl &url, QOAuth1Signature::HttpRequestMethod method, ^ /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp:194:53: error: use of undeclared identifier 'QOAuth1Signature' QOAuth1Signature::QOAuth1Signature(const QUrl &url, QOAuth1Signature::HttpRequestMethod method, ^ /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp:211:1: error: use of undeclared identifier 'QOAuth1Signature' QOAuth1Signature::QOAuth1Signature(const QUrl &url, const QString &clientSharedKey, ^ /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp:212:64: error: unknown type name 'HttpRequestMethod' const QString &tokenSecret, HttpRequestMethod method, ^ /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp:220:1: error: use of undeclared identifier 'QOAuth1Signature' QOAuth1Signature::QOAuth1Signature(const QOAuth1Signature &other) : d(other.d) ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. em++: error: '/mnt/s/emscripten/emsdk/upstream/bin/clang++ -target wasm32-unknown-emscripten -D__EMSCRIPTEN_major__=1 -D__EMSCRIPTEN_minor__=39 -D__EMSCRIPTEN_tiny__=20 -D_LIBCPP_ABI_VERSION=2 -Dunix -D__unix -D__unix__ -Werror=implicit-function-declaration -Xclang -nostdsysteminc -Xclang -isystem/mnt/s/emscripten/emsdk/upstream/emscripten/system/include/libcxx -Xclang -isystem/mnt/s/emscripten/emsdk/upstream/emscripten/system/lib/libcxxabi/include -Xclang -isystem/mnt/s/emscripten/emsdk/upstream/emscripten/system/lib/libunwind/include -Xclang -isystem/mnt/s/emscripten/emsdk/upstream/emscripten/system/include/compat -Xclang -isystem/mnt/s/emscripten/emsdk/upstream/emscripten/system/include -Xclang -isystem/mnt/s/emscripten/emsdk/upstream/emscripten/system/include/libc -Xclang -isystem/mnt/s/emscripten/emsdk/upstream/emscripten/system/lib/libc/musl/arch/emscripten -Xclang -isystem/mnt/s/emscripten/emsdk/upstream/emscripten/system/local/include -Xclang -isystem/mnt/s/emscripten/emsdk/upstream/emscripten/system/include/SSE -Xclang -isystem/mnt/s/emscripten/emsdk/upstream/emscripten/system/lib/compiler-rt/include -Xclang -isystem/mnt/s/emscripten/emsdk/upstream/emscripten/cache/wasm/include -DEMSCRIPTEN -fignore-exceptions -c -Xclang -include-pch -Xclang .pch/Qt5NetworkAuth.pch/c++.pch -pipe -O2 -std=c++1z -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -Wall -Wextra -Wdate-time -Winconsistent-missing-override -DQT_NO_LINKED_LIST -DQT_NO_FOREACH -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_LINKED_LIST -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_BUILD_NETWORKAUTH_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_NETWORK_LIB -DQT_CORE_LIB -I/mnt/s/qt/qt5/qtnetworkauth/src/oauth -I. -I/mnt/s/qt/build/qtbase/include -I/mnt/s/qt/build/qtbase/include/QtNetworkAuth -I/mnt/s/qt/build/qtbase/include/QtNetworkAuth/5.15.0 -I/mnt/s/qt/build/qtbase/include/QtNetworkAuth/5.15.0/QtNetworkAuth -I/mnt/s/qt/build/qtbase/include/QtCore/5.15.0 -I/mnt/s/qt/build/qtbase/include/QtCore/5.15.0/QtCore -I/mnt/s/qt/build/qtbase/include/QtNetwork -I/mnt/s/qt/build/qtbase/include/QtCore -I.moc -I/mnt/s/qt/qt5/qtbase/mkspecs/wasm-emscripten /mnt/s/qt/qt5/qtnetworkauth/src/oauth/qoauth1signature.cpp -Xclang -isystem/mnt/s/emscripten/emsdk/upstream/emscripten/system/include/SDL -c -o .obj/qoauth1signature.o -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr' failed (1) Makefile:3325: recipe for target '.obj/qoauth1signature.o' failed make[3]: *** [.obj/qoauth1signature.o] Error 1 make[3]: Leaving directory '/mnt/s/qt/build/qtnetworkauth/src/oauth' Makefile:46: recipe for target 'sub-oauth-make_first-ordered' failed make[2]: *** [sub-oauth-make_first-ordered] Error 2 make[2]: Leaving directory '/mnt/s/qt/build/qtnetworkauth/src' Makefile:48: recipe for target 'sub-src-make_first' failed make[1]: *** [sub-src-make_first] Error 2 make[1]: Leaving directory '/mnt/s/qt/build/qtnetworkauth' Makefile:112: recipe for target 'module-qtnetworkauth-make_first' failed make: *** [module-qtnetworkauth-make_first] Error 2
I am compiling for webassembly however this doesn't look like an emscripten issue to me.
Any help would be appretiated. -
Hi and welcome to devnet,
Followings the Qt webassembly platform notes, it looks like that module is not yet supported.
-
Hi SGaist, thanks, that's likely the issue.
I did see in the wiki that it suggests running
make module-qtbase module-qtdeclarative [other modules]
but I wasn't sure what modules I needed so I just ranmake
assuming everything would work. I'll be more explicit and report back. -
Ran
make
with all supported webassemly modules as arguments and everything worked (no errors)
make module-qtbase module-qtdeclarative module-qtquickcontrols2 module-qtwebsockets module-qtsvg module-qtcharts module-qtmqtt
Thanks again @SGaist
-
I followed all the above steps and I got the following error after running the make with all supported modules.
make module-qtbase module-qtdeclarative module-qtquickcontrols2 module-qtwebsockets module-qtsvg module-qtcharts module-qtmqtt
Error:
make: *** No rule to make target 'module-qtmqtt'. Stop.
-
@divyanshusahu hi and welcome to devnet,
Are you sure that you have that module in your sources ?
-
Silly me, sorry, it is not present.
I build it after removing "module-qtmqtt" and it works.
One more question:
I am compiling my existing QT project using emcmake cmake and it generates the following warnings and error.Warning:
CMake Warning (dev) at /home/divyanshu/qt/build/qtbase/lib/cmake/Qt5Gui/Qt5Gui_QGifPlugin.cmake:2 (add_library): ADD_LIBRARY called with MODULE option but the target platform does not support dynamic linking. Building a STATIC library instead. This may lead to problems.
Error:
CMake Error at /home/divyanshu/qt/build/qtbase/lib/cmake/Qt5Gui/Qt5Gui_QSvgIconPlugin.cmake:8 (find_package): Could not find a package configuration file provided by "Qt5Svg" (requested version 1.0.0) with any of the following names: Qt5SvgConfig.cmake qt5svg-config.cmake
Is the warning generation normal or there is an error with my QT build? Can you help me with the above error?
-
Not knowing the options you used, I can't tell.
You also did not say what version of Qt you built.
-
My steps are exactly the same stated above by @haiku .
Qt version 5.15
Emscripten Version: 1.39.8mkdir qt cd qt git clone git://code.qt.io/qt/qt5.git cd qt5 git checkout 5.15.0 ./init-repository --module-subset=default,-qtwebengine cd .. mkdir build cd build ../qt5/configure -xplatform wasm-emscripten -opensource -nomake examples -prefix $PWD/qtbase make module-qtbase module-qtdeclarative module-qtquickcontrols2 module-qtwebsockets module-qtsvg module-qtcharts
-
Ok, I forgot it was about wasm.
You might need some updates to your cmake project as the wasm build is static IIRC and your application might be using modules that are not (yet) supported by that platform.