Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-129861

[WoA] Can not compile Qt app outside of src dir with self-compiled static binaries

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P1: Critical
    • None
    • 6.8.0, 6.9.0 FF
    • Build System
    • Windows

    Description

      Have Qt 6.9.0 sources on Windows on arm and configure static build (MSVC2022 arm64):

       

      cmake -DFEATURE_msvc_obj_debug_info=OFF -DOPENSSL_ROOT_DIR=C:\openssl_arm64\include\.. -DCMAKE_C_COMPILER=cl.exe -DCMAKE_CXX_COMPILER=cl.exe -DQT_BUILD_TESTS=OFF -DCMAKE_AUTOGEN_VERBOSE=ON -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DQT_INTERNAL_CALLED_FROM_CONFIGURE:BOOL=TRUE -DQT_BUILD_EXAMPLES=FALSE -DCMAKE_CONFIGURATION_TYPES=RelWithDebInfo;Debug -DINPUT_headersclean=yes -DFEATURE_system_zlib=OFF -DFEATURE_cxx20=ON -DFEATURE_cxx2b=OFF -DINPUT_sql_psql=no -DINPUT_opengl=no -G Ninja Multi-Config -DBUILD_SHARED_LIBS=OFF C:\Users\qt\RTA\src-6.9.0 -DCMAKE_INSTALL_PREFIX:PATH=C:\Users\qt\RTA\src-6.9.0\qtbase -DBUILD_qtwebengine=FALSE 

      build: cmake --build . --parallel -> passes

      PATH:

      S:/binPackage/ffmpeg/x64/4.4\bin;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.41.34120\bin\HostARM64\ARM64;C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\VC\VCPackages;C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\CommonExtensions\Microsoft\TestWindow;C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer;C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\bin\Roslyn;C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\;C:\Program Files\Microsoft Visual Studio\2022\Professional\Team Tools\DiagnosticsHub\Collector;C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\\arm64;C:\Program Files (x86)\Windows Kits\10\bin\\arm64;C:\Program Files\Microsoft Visual Studio\2022\Professional\\MSBuild\Current\Bin\arm64;C:\Windows\Microsoft.NET\Framework64\v4.0.30319;C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\;C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\Tools\;c:\utils\gnuwin32\bin;C:\Program Files\dotnet;C:\Utils\gnuwin32\bin;C:\VulkanSDK\1.2.182.0\Bin;C:\openssl_arm64\bin;c:\Utils\sed\bin;C:\Program Files\OpenSSH-ARM64;C:\Program Files\Java\jdk-17\bin;C:\Program Files\Microsoft\jdk-17.0.11.9-hotspot\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\Utils\sevenzip\;C:\Utils\node-v20.12.2-win-arm64;C:\Utils\Ninja;C:\Program Files\Git\cmd;C:\Program Files\Go\bin;C:\CMake\bin;C:\Program Files\dotnet\;C:\Users\qt\AppData\Local\Microsoft\WindowsApps;C:\Users\qt\go\bin;C:\Users\qt\.dotnet\tools;C:\Utils\Jom;C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin;C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja 

      Copy randomly picked quick example outside of the source directory:

      C:\Users\qt\RTA\src-6.9.0\qtdeclarative\examples\quick\quickwidgets to

      C:\Users\qt\RTA\src-6.9.0\tmp\quickwidget

      Configure example:

      C:\Users\qt\RTA\src-6.9.0\qtbase\bin\qt-cmake -S C:\Users\qt\RTA\tmp\quickwidget -B C:\Users\qt\RTA\tmp\quickwidget\bld_arm64 -GNinja 

      and build: cmake --build . --parallel

      -> fails:

      [1/19] Copying rotatingsquare.qml to C:/Users/qt/RTA/tmp/quickwidget/bld_arm64/QuickWidgetExample/rotatingsquare.qml
      [2/19] Automatic MOC and UIC for target quickwidget
      [3/19] Running AUTOMOC file extraction for target quickwidget
      [4/19] Running rcc for resource qmake_QuickWidgetExample_copy
      [5/19] Running rcc for resource qmake_QuickWidgetExample
      [6/19] Running rcc for resource quickwidget_raw_qml_0
      [7/19] Generating .rcc/qmlcache/quickwidget_qmlcache_loader.cpp
      [8/19] Running moc --collect-json for target quickwidget
      [9/19] Automatic QML type registration for target quickwidget
      [10/19] Generating .rcc/qmlcache/quickwidget_rotatingsquare_qml.cpp, .rcc/qmlcache/quickwidget_rotatingsquare_qml.cpp.aotstats
      [11/19] Building CXX object CMakeFiles\quickwidget.dir\quickwidget_autogen\mocs_compilation.cpp.obj
      [12/19] Building CXX object CMakeFiles\quickwidget.dir\bld_arm64\.qt\rcc\qrc_qmake_QuickWidgetExample_copy.cpp.obj
      [13/19] Building CXX object CMakeFiles\quickwidget.dir\bld_arm64\.qt\rcc\qrc_quickwidget_raw_qml_0.cpp.obj
      [14/19] Building CXX object CMakeFiles\quickwidget.dir\bld_arm64\.qt\rcc\qrc_qmake_QuickWidgetExample.cpp.obj
      [15/19] Building CXX object CMakeFiles\quickwidget.dir\quickwidget_qmltyperegistrations.cpp.obj
      [16/19] Building CXX object CMakeFiles\quickwidget.dir\bld_arm64\.rcc\qmlcache\quickwidget_rotatingsquare_qml.cpp.obj
      [17/19] Building CXX object CMakeFiles\quickwidget.dir\bld_arm64\.rcc\qmlcache\quickwidget_qmlcache_loader.cpp.obj
      [18/19] Building CXX object CMakeFiles\quickwidget.dir\main.cpp.obj
      [19/19] Linking CXX executable quickwidget.exe
      FAILED: quickwidget.exe  (Screenshot taken from the desktop is invalid)
      C:\Windows\system32\cmd.exe /C "cd . && C:\CMake\bin\cmake.exe -E vs_link_exe --intdir=CMakeFiles\quickwidget.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\arm64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\arm64\mt.exe --manifests  -- C:\PROGRA~1\MICROS~1\2022\PROFES~1\VC\Tools\MSVC\1441~1.341\bin\HOSTAR~1\arm64\link.exe /nologo @CMakeFiles\quickwidget.rsp  /out:quickwidget.exe /implib:quickwidget.lib /pdb:quickwidget.pdb /version:0.0 /machine:ARM64 /debug /INCREMENTAL /subsystem:windows && cd ."
      LINK Pass 1: command "C:\PROGRA~1\MICROS~1\2022\PROFES~1\VC\Tools\MSVC\1441~1.341\bin\HOSTAR~1\arm64\link.exe /nologo @CMakeFiles\quickwidget.rsp /out:quickwidget.exe /implib:quickwidget.lib /pdb:quickwidget.pdb /version:0.0 /machine:ARM64 /debug /INCREMENTAL /subsystem:windows /MANIFEST /MANIFESTFILE:CMakeFiles\quickwidget.dir/intermediate.manifest CMakeFiles\quickwidget.dir/manifest.res" failed (exit code 1120) with the following output:
      main.cpp.obj : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in QGifPlugin_init.cpp.obj
      main.cpp.obj : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in QGifPlugin_init.cpp.obj
      quickwidget_qmltyperegistrations.cpp.obj : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in QGifPlugin_init.cpp.obj
      quickwidget_qmltyperegistrations.cpp.obj : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in QGifPlugin_init.cpp.obj
      quickwidget_qmlcache_loader.cpp.obj : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in QGifPlugin_init.cpp.obj
      quickwidget_qmlcache_loader.cpp.obj : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in QGifPlugin_init.cpp.obj
      quickwidget_rotatingsquare_qml.cpp.obj : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in QGifPlugin_init.cpp.obj
      quickwidget_rotatingsquare_qml.cpp.obj : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in QGifPlugin_init.cpp.obj
         Creating library quickwidget.lib and object quickwidget.exp
      LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library
      main.cpp.obj : error LNK2019: unresolved external symbol __imp__invalid_parameter referenced in function "void __cdecl std::_Adl_verify_range<class QQmlError *,class QQmlError *>(class QQmlError * const &,class QQmlError * const &)" (??$_Adl_verify_range@PEAVQQmlError@@PEAV1@@std@@YAXAEBQEAVQQmlError@@0@Z)
      quickwidget_qmlcache_loader.cpp.obj : error LNK2001: unresolved external symbol __imp__invalid_parameter
      quickwidget_rotatingsquare_qml.cpp.obj : error LNK2001: unresolved external symbol __imp__invalid_parameter
      main.cpp.obj : error LNK2019: unresolved external symbol __imp__calloc_dbg referenced in function "char * __cdecl std::_Maklocstr<char>(char const *,char *,struct _Cvtvec const &)" (??$_Maklocstr@D@std@@YAPEADPEBDPEADAEBU_Cvtvec@@@Z)
      quickwidget_qmlcache_loader.cpp.obj : error LNK2001: unresolved external symbol __imp__calloc_dbg
      main.cpp.obj : error LNK2019: unresolved external symbol __imp__CrtDbgReport referenced in function "void __cdecl std::_Adl_verify_range<class QQmlError *,class QQmlError *>(class QQmlError * const &,class QQmlError * const &)" (??$_Adl_verify_range@PEAVQQmlError@@PEAV1@@std@@YAXAEBQEAVQQmlError@@0@Z)
      quickwidget_qmlcache_loader.cpp.obj : error LNK2001: unresolved external symbol __imp__CrtDbgReport
      quickwidget_rotatingsquare_qml.cpp.obj : error LNK2001: unresolved external symbol __imp__CrtDbgReport
      quickwidget.exe : fatal error LNK1120: 3 unresolved externals
      ninja: build stopped: subcommand failed. 

      If the Qt binaries are compiled dynamically as insource, shadow or namespace build the example build, executed with same steps, passes.

      Same static build + example build on MSVC2022 x64 and MinGW targets works fine.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            qtbuildsystem Qt Build System Team
            joaijala Johanna Äijälä
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes