Qt6 qmake for ios generates incorrect paths to standard libraries

Viewed 208

I am migrating a mobile project from Qt 5.14.2 to Qt6.3.1. There was no such problem when using Qt 5.14.2.

after executing this command

$qt_root/ios/bin/qmake \
    $proFile \
    -r -spec macx-ios-clang \
    CONFIG+=release \
    CONFIG+=iphoneos \
    CONFIG+=development \
    “ENTITLEMENTS=$entitlementsFile” \
    “INFO_PLIST=$plistFile” \
    “BUNDLE_PREFIX=com.xxxxxx” \
    “BUNDLE_IDENTIFIER=com.xxxxxx.xxxxxx”

Generated MakeFile and project.pbxproj contain incorrect paths to the qt libraries. The incorrect path starts with Users/qt/work/qt/. This path is missing on the mac.

MakeFile contains both correct and incorrect library paths. At the same time, all libraries are in the qt folder according to their standard paths.

Part of the MakeFile (inserted line breaks for clarity)

    LINK          = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
    LFLAGS        = -stdlib=libc++ $(EXPORT_ARCH_ARGS) $(EXPORT_QMAKE_XARCH_LFLAGS) -fembed-bitcode -Wl,-rpath,@executable_path/Frameworks
    LIBS          = $(SUBLIBS) 
-framework CoreData 
-L/Users/FooBar/projects/myproject-mobile/modules/3rdparty/iOS/GoogleAnalytics/libs 
-lsqlite3 
-lGoogleAnalyticsServices 
-framework Photos 
-framework LocalAuthentication 
-framework AuthenticationServices 
-framework AVFoundation 
-framework StoreKit 
-framework UserNotifications /Users/FooBar/Qt/6.3.1/ios/plugins/webview/libqtwebview_darwin.a 
-framework WebKit 
/Users/FooBar/Qt/6.3.1/ios/plugins/platforms/libqios.a 
/Users/FooBar/Qt/6.3.1/ios/lib/objects-Release/Gui_resources_1/.rcc/qrc_qpdf.cpp.o 
/Users/qt/work/qt/qtbase/build/target/plugins/platforms/libqios.a 
-framework AudioToolbox 
-framework QuartzCore 
-framework AssetsLibrary 
/Users/FooBar/Qt/6.3.1/ios/plugins/iconengines/libqsvgicon.a 
/Users/FooBar/Qt/6.3.1/ios/plugins/imageformats/libqgif.a 
/Users/qt/work/qt/qtbase/build/target/plugins/imageformats/libqgif.a 
/Users/FooBar/Qt/6.3.1/ios/plugins/imageformats/libqico.a 
/Users/qt/work/qt/qtbase/build/target/plugins/imageformats/libqico.a ...

These paths are incorrect:

   /Users/qt/work/qt/qtbase/build/target/plugins/platforms/libqios.a 
   /Users/qt/work/qt/qtbase/build/target/plugins/imageformats/libqgif.a 
   /Users/qt/work/qt/qtbase/build/target/plugins/imageformats/libqico.a

Part of the project.pbxproj

OTHER_LDFLAGS = (
    "-stdlib=libc++",
    "-Wl,-rpath,@executable_path/Frameworks",
    "-L/Users/FooBar/projects/myproject-mobile/modules/3rdparty/iOS/GoogleAnalytics/libs",
    "-lsqlite3",
    "/Users/qt/work/qt/qtbase/build/target/plugins/platforms/darwin/libqiosnsphotolibrarysupport.a",
    "/Users/qt/work/qt/qtbase/build/target/plugins/platforms/libqios.a",
    "-framework",
    "AssetsLibrary",
    "/Users/qt/work/qt/qtbase/build/target/plugins/imageformats/libqgif.a",
    "/Users/qt/work/qt/qtbase/build/target/plugins/imageformats/libqico.a",
    "/Users/qt/work/qt/qtbase/build/target/plugins/imageformats/libqjpeg.a",
    "/Users/qt/work/qt/qtdeclarative/build/target/plugins/qmltooling/libqmldbg_debugger.a",
    "/Users/qt/work/qt/qtdeclarative/build/target/plugins/qmltooling/libqmldbg_inspector.a",
    "/Users/qt/work/qt/qtdeclarative/build/target/plugins/qmltooling/libqmldbg_local.a",
    "/Users/qt/work/qt/qtdeclarative/build/target/plugins/qmltooling/libqmldbg_messages.a",
    "/Users/qt/work/qt/qtdeclarative/build/target/plugins/qmltooling/libqmldbg_native.a",
    "/Users/qt/work/qt/qtdeclarative/build/target/plugins/qmltooling/libqmldbg_nativedebugger.a",
    "/Users/qt/work/qt/qtdeclarative/build/target/plugins/qmltooling/libqmldbg_preview.a",
    "/Users/qt/work/qt/qtdeclarative/build/target/plugins/qmltooling/libqmldbg_profiler.a",
    "/Users/qt/work/qt/qtdeclarative/build/target/plugins/qmltooling/libqmldbg_quickprofiler.a",
    "/Users/qt/work/qt/qtdeclarative/build/target/plugins/qmltooling/libqmldbg_server.a",
    "/Users/qt/work/qt/qtdeclarative/build/target/plugins/qmltooling/libqmldbg_tcp.a",
    "/Users/qt/work/qt/qtdeclarative/build/target/lib/libQt6QuickControls2.a",
    "/Users/qt/work/qt/qtdeclarative/build/target/lib/libQt6Quick.a",
    "/Users/qt/work/qt/qtbase/build/target/lib/libQt6OpenGL.a",
    "/Users/qt/work/qt/qtbase/build/target/lib/libQt6Widgets.a",

When building a project at the Ld execution stage, I get the following errors:

clang: error: no such file or directory: ‘/Users/qt/work/qt/qtbase/build/target/plugins/platforms/darwin/libqiosnsphotolibrarysupport.a’
clang: error: no such file or directory: ‘/Users/qt/work/qt/qtbase/build/target/plugins/platforms/libqios.a’
clang: error: no such file or directory: ‘/Users/qt/work/qt/qtbase/build/target/plugins/imageformats/libqgif.a’
clang: error: no such file or directory: ‘/Users/qt/work/qt/qtbase/build/target/plugins/imageformats/libqico.a’
clang: error: no such file or directory: ‘/Users/qt/work/qt/qtbase/build/target/plugins/imageformats/libqjpeg.a’

=========================

I use this script to fix the paths

cd /Users/FooBar/projects/mobile_build/
pwd

makefile=apps/myproject-mobile/MakeFile
projectfile=apps/myproject-mobile/myproject-mobile.xcodeproj/project.pbxproj

echo =============fix make file ========================================
sed -i '' "s,/Users/qt/work/qt/qtbase/build/target/,/Users/FooBar/Qt/6.3.1/ios/,g" $makefile
sed -i '' "s,/Users/qt/work/qt/qtdeclarative/build/target/,/Users/FooBar/Qt/6.3.1/ios/,g" $makefile
sed -i '' "s,/Users/qt/work/qt/qtwebview/build/target/,/Users/FooBar/Qt/6.3.1/ios/,g" $makefile
sed -i '' "s,/Users/qt/work/qt/qt5compat/build/target/,/Users/FooBar/Qt/6.3.1/ios/,g" $makefile

echo =============fix xcode project file ========================================
sed -i '' "s,/Users/qt/work/qt/qtbase/build/target/,/Users/FooBar/Qt/6.3.1/ios/,g" $projectfile
sed -i '' "s,/Users/qt/work/qt/qtdeclarative/build/target/,/Users/FooBar/Qt/6.3.1/ios/,g" $projectfile
sed -i '' "s,/Users/qt/work/qt/qtwebview/build/target/,/Users/FooBar/Qt/6.3.1/ios/,g" $projectfile
sed -i '' "s,/Users/qt/work/qt/qt5compat/build/target/,/Users/FooBar/Qt/6.3.1/ios/,g" $projectfile
0 Answers
Related