Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Using compilers other than MinGW



  • Hi all,

    Up to know I have been using the MinGW compiler for desktop apps. Now, for the first time, I want to learn how to use GCC and Clang from command line.
    I'm using Qt Creator 4.11.0 (Qt 5.14.0) on Windows and here are my compilers and kits:
    1.PNG

    2.PNG

    For instance, I have this simple program and want not to only run it by the green Run button on the IDE, but also use those compilers and from command line:

    hello.cpp:

    #include <QApplication>
    #include <QLabel>
    
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
    
        QLabel *label = new QLabel("<h2><i>Hello</i>"
                                   "<font color=red>Qt!</font></h2>");
        label->show();
        return app.exec();
    }
    

    What are the instructions to do the job, please?


  • Qt Champions 2019

    @tomy said in Using compilers other than MinGW:

    I want to learn how to use GCC and Clang

    MinGW is the Windows port of GCC, so MinGW == GCC on Windows.
    To build your app from comman line:

    • Open CMD
    • Create a build directory somewhere
    • Change to that directory
    • PATH_TO_MINGW_QT/qmake.exe PATH_TO_YOUR_PROJECT_DIRECTORY
    • PATH_TO_QT_Tools/mingw730_64/bin/mingww32-make.exe


  • Thank you for your reply. I did them but found this error and nothing clearly related to that in the environment section of the IDE!

    C:\Users\ME\Desktop\build>C:\Qt\5.14.0\mingw73_64\bin\qmake.exe D:\Projects\Qt\Hello\Hello C:\Qt\Tools\mingw730_64\bin\mingw32-make.exe
    Project ERROR: Cannot run compiler 'g++'. Output:
    ===================
    ===================
    Maybe you forgot to setup the environment?
    
    C:\Users\ME\Desktop\build>
    

  • Moderators

    @tomy inside this folder: path/to/qt/5.1X.x/mingw73_64/bin you'll find a qtenv.bat file execute that first. inside your console. to set up the environment



  • @J-Hilk

    I did this:

    C:\Users\ME\Desktop\build>C:\Qt\5.14.0\mingw73_64\bin\qtenv2.bat
    Setting up environment for Qt usage...
    
    C:\Users\ME\Desktop\build>C:\Qt\5.14.0\mingw73_64\bin\qmake.exe D:\Projects\Qt\Hello\Hello C:\Qt\Tools\mingw730_64\bin\mingw32-make.exe
    Info: creating stash file C:\Users\ME\Desktop\build\.qmake.stash
    
    C:\Users\ME\Desktop\build>
    

    There wasn't a qtenv.bat file there so I used qtenv2.bat instead.
    Two files, as following, were created but still no output window of the app.

    2.PNG


  • Qt Champions 2019

    @tomy What about calling make as shown in my previous post?


  • Moderators

    @tomy said in Using compilers other than MinGW:

    C:\Users\ME\Desktop\build>C:\Qt\5.14.0\mingw73_64\bin\qmake.exe D:\Projects\Qt\Hello\Hello C:\Qt\Tools\mingw730_64\bin\mingw32-make.exe

    I think the problem is here, you made the call to qmake and make one, separate those.



  • The stuff were mixed up and I restarted the machine. Now!

    C:\Users\ME\Desktop\build>C:\Qt\5.14.0\mingw73_64\bin\qtenv2.bat

    Hit enter

    C:\Users\ME\Desktop\build>C:\Qt\5.14.0\mingw73_64\bin\qmake.exe D:\Projects\Qt\Hello\Hello

    Hit enter

    ===================
    ===================
    Maybe you forgot to setup the environment?
    
    C:\Users\ME\Desktop\build>
    

  • Qt Champions 2019

    @tomy Delete everything inside build directory and try again



  • @jsulm

    Nothing changed, unfortunately!

    I even deleted the folder and made a new one. But no difference in result.

    Also ran CMD as administrator and tried again. Still no success. :(



  • I used the 32 bit version of the file and it worked! :)

    So I walked through this way:

    C:\Users\ME\Desktop\Build>C:\Qt\5.14.0\mingw73_32\bin\qtenv2.bat Setting up environment for Qt usage...

    Then C:\Users\ME\Desktop\Build>C:\Qt\5.14.0\mingw73_32\bin\qmake.exe D:\Projects\Qt\Hello\Hello

    And finally:
    C:\Users\ME\Desktop\Build>C:\Qt\Tools\mingw730_32\bin\mingw32-make.exe

    And the following files were added to the Build folder:

    1.PNG

    En passant, the final and complete message on CMD is:

    C:\Users\ME\Desktop\Build>C:\Qt\Tools\mingw730_32\bin\mingw32-make.exe
    g++ -c -fno-keep-inline-dllexport -O2 -Wall -Wextra -Wextra -fexceptions -mthreads -DUNICODE -D_UNICODE -DWIN32 -DMINGW_HAS_SECURE_API=1 -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -ID:\Projects\Qt\Hello\Hello -I. -ID:\Projects\Qt\Hello\Hello -I..\..\..\..\Qt\5.14.0\mingw73_32\include -I..\..\..\..\Qt\5.14.0\mingw73_32\include\QtWidgets -I..\..\..\..\Qt\5.14.0\mingw73_32\include\QtGui -I..\..\..\..\Qt\5.14.0\mingw73_32\include\QtANGLE -I..\..\..\..\Qt\5.14.0\mingw73_32\include\QtCore -I. -I..\..\..\..\Qt\5.14.0\mingw73_32\mkspecs\win32-g++  -o hello.o D:\Projects\Qt\Hello\Hello\hello.cpp
    g++ -Wl,-s -Wl,-subsystem,windows -mthreads -o Hello.exe hello.o  C:\Qt\5.14.0\mingw73_32\lib\libQt5Widgets.a C:\Qt\5.14.0\mingw73_32\lib\libQt5Gui.a C:\Qt\5.14.0\mingw73_32\lib\libQt5Core.a  -lmingw32 C:\Qt\5.14.0\mingw73_32\lib\libqtmain.a -LC:\openssl\lib -LC:\Utils\my_sql\mysql-5.7.25-win32\lib -LC:\Utils\postgresql\pgsql\lib -lshell32
    
    C:\Users\ME\Desktop\Build>
    

    Is it now done! :)



  • Still I'm puzzled what to call what we did! :) Is it using GCC on command line to create the executable file for the project, or something else? :)

    It's actually not running the app using gcc from command line because no output window is shown.



  • @tomy said in Using compilers other than MinGW:

    It's actually not running the app using gcc from command line because no output window is shown.

    The compiler just builds. There isn't really any such thing as "running the app using gcc." You use the gcc toolchain (or some other toolchain) to make the app. Then you run it if you want.

    Once it's built, it doesn't matter which toolchain it came from or how exactly it was built. You just run it.


  • Qt Champions 2019

    @tomy said in Using compilers other than MinGW:

    It's actually not running the app

    Because it can't find the needed libs (Qt libs especially). When running from QtCreator the environment is prepared so the OS can find needed libs.
    If you want to do it from command line manually then first deploy your app: https://doc.qt.io/qt-5/windows-deployment.html



  • Thank you both. No I don't wish to run it; I merely wanted to know what I did (with your help), which is "building" the app. :)

    Now that we could build the program using the GCC compiler on Windows (MingW), how to build it this time using the other compiler, Clang, please?


  • Qt Champions 2019

    @tomy said in Using compilers other than MinGW:

    how to build it this time using the other compiler, Clang, please?

    Do you have Qt built with this compiler?
    If so, then it works same way, just use qmake.exe from Clang Qt.



  • @jsulm

    Do you have Qt built with this compiler?

    I don't know what it is. Sorry. I sent two screenshots in the first post. Aren't they there, please?


  • Qt Champions 2019

    @tomy "I don't know what it is" - well, it is Qt built using Clang compiler.
    You have a Kit for Android + Clang, you can use it to build for Android.
    If you want to see how to do so build first in QtCreator and check the "Compile Output" tab to see how QtCreator builds the project.



  • @jsulm

    I tested a number of QtQuick apps to build for Android, but for all I get the error below!

    C:\Qt\5.14.0\android\include\QtCore\qglobal.h:45: error: 'type_traits' file not found
    #  include <type_traits>
               ^~~~~~~~~~~~~
    


  • The problem was with NDK. A higher version of NDK solved the issue. (For those who might come across the issue afterwards too)

    @jsulm

    I built and created the .apk file of a project called QML_test_1 using Qt Creator. The Output Window shows hundreds of lines! How to pinpoint the expressions to build the project the same way as the prior stage, this time with Clang, please?

    20:08:04: Running steps for project QML_test_1...
    20:08:04: Starting: "C:\Qt\5.14.0\android\bin\qmake.exe" D:\Projects\QML\QML_test_1\QML_test_1\QML_test_1.pro -spec android-clang "CONFIG+=debug" "CONFIG+=qml_debug" ANDROID_ABIS="armeabi-v7a"
    Info: creating stash file D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\.qmake.stash
    20:08:05: The process "C:\Qt\5.14.0\android\bin\qmake.exe" exited normally.
    20:08:05: Starting: "D:\Qt_Stuff\android-ndk-r21\prebuilt\windows-x86_64\bin\make.exe" -f D:/Projects/QML/QML_test_1/build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug/Makefile qmake_all
    make: Nothing to be done for 'qmake_all'.
    20:08:05: The process "D:\Qt_Stuff\android-ndk-r21\prebuilt\windows-x86_64\bin\make.exe" exited normally.
    20:08:05: Starting: "D:\Qt_Stuff\android-ndk-r21\prebuilt\windows-x86_64\bin\make.exe" -j4
    D:\Qt_Stuff\android-ndk-r21/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ -c -target armv7a-linux-androideabi21 -fno-limit-debug-info -fPIC -fstack-protector-strong -DANDROID -g -marm -O0 -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_QUICKCONTROLS2_LIB -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I..\QML_test_1 -I. -IC:\Qt\5.14.0\android\include -IC:\Qt\5.14.0\android\include\QtQuickControls2 -IC:\Qt\5.14.0\android\include\QtQuick -IC:\Qt\5.14.0\android\include\QtGui -IC:\Qt\5.14.0\android\include\QtQmlModels -IC:\Qt\5.14.0\android\include\QtQml -IC:\Qt\5.14.0\android\include\QtNetwork -IC:\Qt\5.14.0\android\include\QtCore -Iarmeabi-v7a -IC:\Qt\5.14.0\android\mkspecs\android-clang -o armeabi-v7a\main.obj ..\QML_test_1\main.cpp
    C:\Qt\5.14.0\android\bin\rcc.exe -name qml ..\QML_test_1\qml.qrc -o armeabi-v7a\qrc_qml.cpp
    D:\Qt_Stuff\android-ndk-r21/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ -c -target armv7a-linux-androideabi21 -fno-limit-debug-info -fPIC -fstack-protector-strong -DANDROID -g -marm -O0 -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_QUICKCONTROLS2_LIB -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I..\QML_test_1 -I. -IC:\Qt\5.14.0\android\include -IC:\Qt\5.14.0\android\include\QtQuickControls2 -IC:\Qt\5.14.0\android\include\QtQuick -IC:\Qt\5.14.0\android\include\QtGui -IC:\Qt\5.14.0\android\include\QtQmlModels -IC:\Qt\5.14.0\android\include\QtQml -IC:\Qt\5.14.0\android\include\QtNetwork -IC:\Qt\5.14.0\android\include\QtCore -Iarmeabi-v7a -IC:\Qt\5.14.0\android\mkspecs\android-clang -o armeabi-v7a\qrc_qml.obj armeabi-v7a\qrc_qml.cpp
    D:\Qt_Stuff\android-ndk-r21/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ -target armv7a-linux-androideabi21 -fno-limit-debug-info -Wl,-soname,libQML_test_1_armeabi-v7a.so -Wl,-rpath-link=C:/Qt/5.14.0/android/lib -Wl,--build-id=sha1 -Wl,--no-undefined -Wl,-z,noexecstack -shared -o libQML_test_1_armeabi-v7a.so armeabi-v7a\main.obj armeabi-v7a\qrc_qml.obj   C:/Qt/5.14.0/android/lib/libQt5QuickControls2_armeabi-v7a.so C:/Qt/5.14.0/android/lib/libQt5Quick_armeabi-v7a.so C:/Qt/5.14.0/android/lib/libQt5Gui_armeabi-v7a.so C:/Qt/5.14.0/android/lib/libQt5QmlModels_armeabi-v7a.so C:/Qt/5.14.0/android/lib/libQt5Qml_armeabi-v7a.so C:/Qt/5.14.0/android/lib/libQt5Network_armeabi-v7a.so C:/Qt/5.14.0/android/lib/libQt5Core_armeabi-v7a.so -lGLESv2   -llog -lz -lm -ldl -lc
    20:08:07: The process "D:\Qt_Stuff\android-ndk-r21\prebuilt\windows-x86_64\bin\make.exe" exited normally.
    20:08:07: Starting: "D:\Qt_Stuff\android-ndk-r21\prebuilt\windows-x86_64\bin\make.exe" "INSTALL_ROOT=D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build" install
    C:\Qt\5.14.0\android\bin\qmake.exe -install qinstall -exe libQML_test_1_armeabi-v7a.so D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\libs\armeabi-v7a\libQML_test_1_armeabi-v7a.so
    20:08:07: The process "D:\Qt_Stuff\android-ndk-r21\prebuilt\windows-x86_64\bin\make.exe" exited normally.
    20:08:07: Starting: "C:\Qt\5.14.0\android\bin\androiddeployqt.exe" --input D:/Projects/QML/QML_test_1/build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug/android-QML_test_1-deployment-settings.json --output D:/Projects/QML/QML_test_1/build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug/android-build --android-platform android-29 --jdk "C:/Program Files/Java/jdk1.8.0_211" --gradle
    Generating Android Package
      Input file: D:/Projects/QML/QML_test_1/build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug/android-QML_test_1-deployment-settings.json
      Output directory: D:/Projects/QML/QML_test_1/build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug/android-build/
      Application binary: QML_test_1
      Android build platform: android-29
      Install to device: No
      -- Skipping C:/Qt/5.14.0/android/plugins/iconengines/libplugins_iconengines_qsvgicon_armeabi-v7a.so. It has unmet dependencies: lib/libQt5Svg_armeabi-v7a.so,lib/libQt5Widgets_armeabi-v7a.so.
      -- Skipping C:/Qt/5.14.0/android/plugins/imageformats/libplugins_imageformats_qsvg_armeabi-v7a.so. It has unmet dependencies: lib/libQt5Svg_armeabi-v7a.so,lib/libQt5Widgets_armeabi-v7a.so.
    Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.impl
    Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.impl
    Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.impl
    Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.Fusion.impl
    Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.Fusion.impl
    Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.Imagine.impl
    Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.Imagine.impl
    Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.Imagine.impl
    Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.Material.impl
    Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.Material.impl
    Warning: QML import could not be resolved in any of the import paths: QtQuick.Controls.Universal.impl
    > Task :preBuild UP-TO-DATE
    > Task :preDebugBuild UP-TO-DATE
    > Task :compileDebugAidl
    > Task :compileDebugRenderscript NO-SOURCE
    > Task :checkDebugManifest
    > Task :generateDebugBuildConfig
    > Task :mainApkListPersistenceDebug
    > Task :generateDebugResValues
    > Task :generateDebugResources
    > Task :createDebugCompatibleScreenManifests
    > Task :processDebugManifest
    > Task :mergeDebugShaders
    > Task :compileDebugShaders
    > Task :generateDebugAssets
    > Task :mergeDebugAssets
    > Task :processDebugJavaRes NO-SOURCE
    > Task :checkDebugDuplicateClasses
    > Task :mergeDebugResources
    > Task :processDebugResources
    > Task :validateSigningDebug
    > Task :signingConfigWriterDebug
    > Task :mergeDebugJniLibFolders
    > Task :mergeExtDexDebug
    > Task :javaPreCompileDebug
    
    > Task :compileDebugJavaWithJavac
    Note: Some input files use or override a deprecated API.
    Note: Recompile with -Xlint:deprecation for details.
    
    > Task :compileDebugSources
    > Task :mergeDebugNativeLibs
    > Task :transformClassesWithDexBuilderForDebug
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_bearer_qandroidbearer_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_imageformats_qicns_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_imageformats_qtga_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_imageformats_qwbmp_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_qmltooling_qmldbg_debugger_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_qmltooling_qmldbg_messages_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_qmltooling_qmldbg_nativedebugger_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_qmltooling_qmldbg_preview_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_qmltooling_qmldbg_profiler_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libqml_QtGraphicalEffects_qtgraphicaleffectsplugin_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libqml_QtQuick_Controls.2_Imagine_qtquickcontrols2imaginestyleplugin_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libqml_QtQuick_Controls.2_qtquickcontrols2plugin_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libqml_QtQuick_Controls.2_Universal_qtquickcontrols2universalstyleplugin_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libqml_QtQuick_Layouts_qquicklayoutsplugin_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libqml_QtQuick_Templates.2_qtquicktemplates2plugin_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libqml_QtQuick_Window.2_windowplugin_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libQML_test_1_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libQt5Network_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libQt5QuickParticles_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    
    > Task :stripDebugDebugSymbols
    Compatible side by side NDK version was not found.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libc++_shared.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_imageformats_qgif_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_imageformats_qico_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_imageformats_qjpeg_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_imageformats_qtiff_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_imageformats_qwebp_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_platforms_qtforandroid_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_qmltooling_qmldbg_inspector_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_qmltooling_qmldbg_local_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_qmltooling_qmldbg_native_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_qmltooling_qmldbg_quickprofiler_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_qmltooling_qmldbg_server_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libplugins_qmltooling_qmldbg_tcp_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libqml_QtGraphicalEffects_private_qtgraphicaleffectsprivate_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libqml_QtQuick.2_qtquick2plugin_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libqml_QtQuick_Controls.2_Fusion_qtquickcontrols2fusionstyleplugin_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libqml_QtQuick_Controls.2_Material_qtquickcontrols2materialstyleplugin_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libQt5Core_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libQt5Gui_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libQt5QmlModels_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libQt5QmlWorkerScript_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libQt5Qml_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libQt5QuickControls2_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libQt5QuickTemplates2_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    Unable to strip library 'D:\Projects\QML\QML_test_1\build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug\android-build\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a\libQt5Quick_armeabi-v7a.so' due to missing strip tool for ABI 'ARMEABI_V7A'. Packaging it as is.
    
    > Task :mergeDebugJavaResource
    > Task :mergeDexDebug
    > Task :packageDebug
    > Task :assembleDebug
    
    BUILD SUCCESSFUL in 20s
    25 actionable tasks: 25 executed
    Android package built successfully in 29.187 ms.
      -- File: D:/Projects/QML/QML_test_1/build-QML_test_1-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_0_for_Android-Debug/android-build//build/outputs/apk/debug/android-build-debug.apk
    20:08:36: The process "C:\Qt\5.14.0\android\bin\androiddeployqt.exe" exited normally.
    20:08:36: Elapsed time: 00:32.
    

  • Qt Champions 2019

    @tomy said in Using compilers other than MinGW:

    this time with Clang, please?

    Please take a closer look at the output you get:

    D:\Qt_Stuff\android-ndk-r21/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ -c -target armv7a-linux-an
    

    Do you see clang++ ?
    The android Kit already uses Clang to compile.



  • @jsulm

    The problem is that I'm not experienced in it.
    Anyways, yes, I see the above section which is part of a very long line.

    Should I use this method?

    • Going to the "Build" folder using CMD
    • Typing D:\Qt_Stuff\android-ndk-r21/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ -c -target armv7a-linux-androideabi21 followed by the path to the project's directory

  • Qt Champions 2019

    @tomy said in Using compilers other than MinGW:

    Should I use this method?

    Why do you want to do this? This line calls the compiler to compile a source code file. There is usually no need to do it manually, especially in bigger projects. This is how a QMake based project is usually build:

    qmake
    make
    make install
    

    As you can see there is no manual compiler call . Make calls compiler for you.
    Can you please explain what you're trying to achieve?



  • @jsulm

    I think I said that in our prior posts. I'm aiming at building projects using GCC and Clang compilers from command line instead of the hammer button on the IDE (ctrl+B). For the GCC compiler, we made it above and built the project.
    For Clang, you said it's similar. So I thought of that set of instructions.

    For an empty folder called "BuildApk" on desktop to be used for building: C:\Users\ME\Desktop\BuildApk
    and the project's directory on the path: D:\Projects\QML\QML_test_1\QML_test_1
    what expressions do I need to use to build the project QML_test_1 using Clang?


  • Qt Champions 2019

    @tomy If you want to build Qt apps with CLang you need Qt build with that compiler (and of cource CLang). Then you do it as usual: qmake, make.
    For Android this is already the case as Android NDK uses CLang and Qt for Android is built using CLang from Android NDK.
    For which other platform do you want to use CLang?



  • @jsulm

    I just want to build a project using Clang manually. And since the Android kit has that compiler on my Qt, so I chose a QML project.

    So I think I must go this way:

    • C:\Users\ME\Desktop\BuildApk>C:\Qt\5.14.0\android\bin\qmake.exe D:\Projects\QML\QML_test_1\QML_test_1

    *the make file but what is the name of that and on what address on Qt!?

    I guess I also need to setup the environment. But is the name of the file for Clang qtenv2.bat as well?


  • Qt Champions 2019

    @tomy said in Using compilers other than MinGW:

    the make file but what is the name of that and on what address on Qt!?

    I don't understand this. Do you mean the name and location of the make file?
    Makefile is created in the directory from which you call qmake and it is called Makefile.



  • @jsulm

    No I meant the make and qmake files.
    Please look at your previous set:

    • 1- Open CMD
    • 2- Create a build directory somewhere
    • 3- Change to that directory
    • 4- PATH_TO_MINGW_QT/qmake.exe PATH_TO_YOUR_PROJECT_DIRECTORY
    • 5- PATH_TO_QT_Tools/mingw730_64/bin/mingww32-make.exe

    I think number 4 should change to this:

    • 4- PATH_TO_ANDROID/qmake.exe PATH_TO_YOUR_PROJECT_DIRECTORY

    I found the qmake.exe file here: C:\Qt\5.14.0\android\bin\qmake.exe

    Agree up to here?
    If so, then we need to look up the make.exe file but this time not inside the mingw730_64 folder. Right?


  • Qt Champions 2019

    @tomy said in Using compilers other than MinGW:

    If so, then we need to look up the make.exe file but this time not inside the mingw730_64 folder. Right?

    It's right there in the build log you posted before:

    20:08:05: Starting: "D:\Qt_Stuff\android-ndk-r21\prebuilt\windows-x86_64\bin\make.exe"
    


  • @jsulm

    I ran the following and got the error for the environment. I'm sure the file for this is not that qtenv2.bat we used for GCC.

    C:\Users\ME\Desktop\BuildApk>C:\Qt\5.14.0\android\bin\qmake.exe D:\Projects\QML\QML_test_1\QML_test_1
    Project ERROR: You need to set the ANDROID_NDK_ROOT environment variable to point to your Android NDK.
    Could not read qmake configuration file C:/Qt/5.14.0/android/mkspecs/android-clang/qmake.conf.
    Error processing project file: D:\Projects\QML\QML_test_1\QML_test_1\QML_test_1.pro
    

    Should I firstly run this line on CMD?
    C:\Qt\5.14.0\android\mkspecs\android-clang\qmake.conf


  • Qt Champions 2019

    @tomy said in Using compilers other than MinGW:

    C:\Qt\5.14.0\android\mkspecs\android-clang\qmake.conf

    This is a config file, nothing you can run.
    The error message tells you what is missing: "You need to set the ANDROID_NDK_ROOT environment variable to point to your Android NDK".
    Check the Build settings for that Kit in QtCreator (left side "Projects/Build/Build Environment") and look there for ANDROID_NDK_ROOT variable there. Then, before running qmake, set ANDROID_NDK_ROOT in the same way it is set in Build settings.



  • @jsulm

    Check the Build settings for that Kit in QtCreator (left side "Projects/Build/Build Environment") and look there for ANDROID_NDK_ROOT variable there.

    I found it and its root there is: D:\Qt_Stuff\android-ndk-r21

    Then, before running qmake, set ANDROID_NDK_ROOT in the same way it is set in Build settings.

    I sat that this way, on Windows Environment:

    1.PNG

    Then ran the CMD command:

    C:\Users\ME\Desktop\BuildApk>C:\Qt\5.14.0\android\bin\qmake.exe D:\Projects\QML\QML_test_1\QML_test_1
    Info: creating stash file C:\Users\ME\Desktop\BuildApk\.qmake.stash
    
    C:\Users\ME\Desktop\BuildApk>
    

    Then a number of files were created in the folder:

    2.PNG

    But still there isn't any .apk file there!



  • Sorry, I forgot to run the last command which is the path to make.exe:
    D:\Qt_Stuff\android-ndk-r21\prebuilt\windows-x86_64\bin\make.exe

    After this, a few more files, including .exe files, were added to the BuildApk folder (which is expected as we're on the windows-x86_64 path). But still no .apk file.

    When we built the project using Gcc for Windows, we obtained the executable file. So we must obtain the .apk file for Android when we build the project using Clang for Android kit. Not right?

    Where have I gone wrong and how to built the project completely so that we also have the apk file, please?


  • Lifetime Qt Champion

    @tomy
    Hi
    Normally the APk is build by Creator. When you compile in the commandline, you have to do this step manually.
    Details here.
    https://doc.qt.io/qt-5/deployment-android.html

    I think when running androiddeployqt its will make the APK file but i cant tell what parameters to use.


Log in to reply