OBJC compiler NOTFOUND when building Qt 6.2 for iOS from source
-
When building Qt 6.2 from source for iOS as follows:
/Users/martin/workspace/qt6_local_build/src/qt6/configure -prefix /Users/martin/workspace/qt6_local_build/qt_ios_armv8_64_install -static -xplatform macx-ios-clang -I /Users/martin/workspace/qt6_local_build/openssl_ios_armv8_64_build/openssl-1.1.1s/include -L /Users/martin/workspace/qt6_local_build/openssl_ios_armv8_64_build/openssl-1.1.1s -ccache -no-sql -sqlite -no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci -no-sql-odbc -no-sql-psql -qt-doubleconversion -qt-libjpeg -qt -libpng -qt-zlib -no-warnings-are-errors -nomake examples -nomake tests -release -openssl-linked -- -DQT_UIKIT_SDK=iphoneos -DQT_HOST_PATH=/Users/martin/workspace/qt6_local_build/qt_macos_x86_64_build/qtbase -DOPENSSL_USE_STATIC_LIBS=ON -DOPENSSL_ROOT_DIR=/Users/martin/workspace/qt6_local_build/openssl_ios_armv8_64_build/openssl-1.1.1swhich results in:
/Applications/CMake.app/Contents/bin/cmake' '-DQT_UIKIT_SDK=iphoneos' '-DQT_HOST_PATH=/Users/martin/workspace/qt6_local_build/qt_macos_x86_64_build/qtbase' '-DOPENSSL_USE_STATIC_LIBS=ON' '-DOPENSSL_ROOT_DIR=/Users/martin/workspace/qt6_local_build/openssl_ios_armv8_64_build/openssl-1.1.1s' '-DQT_USE_CCACHE=ON' '-DBUILD_SHARED_LIBS=OFF' '-DWARNINGS_ARE_ERRORS=OFF' '-DCMAKE_INSTALL_PREFIX=/Users/martin/workspace/qt6_local_build/qt_ios_armv8_64_install' '-DQT_QMAKE_TARGET_MKSPEC=macx-ios-clang' '-DCMAKE_CXX_COMPILER=clang++' '-DCMAKE_SYSTEM_NAME=iOS' '-DQT_BUILD_EXAMPLES=FALSE' '-DQT_BUILD_TESTS=FALSE' '-DCMAKE_BUILD_TYPE=Release' '-DQT_EXTRA_INCLUDEPATHS=/Users/martin/workspace/qt6_local_build/openssl_ios_armv8_64_build/openssl-1.1.1s/include' '-DQT_EXTRA_LIBDIRS=/Users/martin/workspace/qt6_local_build/openssl_ios_armv8_64_build/openssl-1.1.1s' '-DINPUT_sql_sqlite=no' '-DINPUT_sql_db2=no' '-DINPUT_sql_ibase=no' '-DINPUT_sql_mysql=no' '-DINPUT_sql_oci=no' '-DINPUT_sql_odbc=no' '-DINPUT_sql_psql=no' '-DINPUT_doubleconversion=qt' '-DINPUT_libjpeg=qt' '-DINPUT_libpng=qt' '-DINPUT_system_zlib=no' '-DINPUT_openssl=linked' '-G' 'Ninja' '/Users/martin/workspace/qt6_local_build/src/qt6'I get the message:
-- Looking for a OBJC compiler -- Looking for a OBJC compiler - NOTFOUND -- Looking for a OBJCXX compiler -- Looking for a OBJCXX compiler - NOTFOUNDand later on when trying to build, there are multiple failure with:
error: Objective-C was disabled in PCH file but is currently enabledThere seems to be a problem when the CMake macro
check_languageis called. If I modify the macroqt_enable_cmake_languagesinqtbase/cmake/QtBuildInternals/QtBuildInternalsConfig.cmakeso thatOBJCandOBJCXXare appended to__qt_required_language_listinstead of__qt_optional_language_list, the build succeeds.Is there anything I should pass to
configureto get this working without changing the code?CMake version is 3.25.
XCode 13.2.1
MacOS 11.7 Big Sur -
When building Qt 6.2 from source for iOS as follows:
/Users/martin/workspace/qt6_local_build/src/qt6/configure -prefix /Users/martin/workspace/qt6_local_build/qt_ios_armv8_64_install -static -xplatform macx-ios-clang -I /Users/martin/workspace/qt6_local_build/openssl_ios_armv8_64_build/openssl-1.1.1s/include -L /Users/martin/workspace/qt6_local_build/openssl_ios_armv8_64_build/openssl-1.1.1s -ccache -no-sql -sqlite -no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci -no-sql-odbc -no-sql-psql -qt-doubleconversion -qt-libjpeg -qt -libpng -qt-zlib -no-warnings-are-errors -nomake examples -nomake tests -release -openssl-linked -- -DQT_UIKIT_SDK=iphoneos -DQT_HOST_PATH=/Users/martin/workspace/qt6_local_build/qt_macos_x86_64_build/qtbase -DOPENSSL_USE_STATIC_LIBS=ON -DOPENSSL_ROOT_DIR=/Users/martin/workspace/qt6_local_build/openssl_ios_armv8_64_build/openssl-1.1.1swhich results in:
/Applications/CMake.app/Contents/bin/cmake' '-DQT_UIKIT_SDK=iphoneos' '-DQT_HOST_PATH=/Users/martin/workspace/qt6_local_build/qt_macos_x86_64_build/qtbase' '-DOPENSSL_USE_STATIC_LIBS=ON' '-DOPENSSL_ROOT_DIR=/Users/martin/workspace/qt6_local_build/openssl_ios_armv8_64_build/openssl-1.1.1s' '-DQT_USE_CCACHE=ON' '-DBUILD_SHARED_LIBS=OFF' '-DWARNINGS_ARE_ERRORS=OFF' '-DCMAKE_INSTALL_PREFIX=/Users/martin/workspace/qt6_local_build/qt_ios_armv8_64_install' '-DQT_QMAKE_TARGET_MKSPEC=macx-ios-clang' '-DCMAKE_CXX_COMPILER=clang++' '-DCMAKE_SYSTEM_NAME=iOS' '-DQT_BUILD_EXAMPLES=FALSE' '-DQT_BUILD_TESTS=FALSE' '-DCMAKE_BUILD_TYPE=Release' '-DQT_EXTRA_INCLUDEPATHS=/Users/martin/workspace/qt6_local_build/openssl_ios_armv8_64_build/openssl-1.1.1s/include' '-DQT_EXTRA_LIBDIRS=/Users/martin/workspace/qt6_local_build/openssl_ios_armv8_64_build/openssl-1.1.1s' '-DINPUT_sql_sqlite=no' '-DINPUT_sql_db2=no' '-DINPUT_sql_ibase=no' '-DINPUT_sql_mysql=no' '-DINPUT_sql_oci=no' '-DINPUT_sql_odbc=no' '-DINPUT_sql_psql=no' '-DINPUT_doubleconversion=qt' '-DINPUT_libjpeg=qt' '-DINPUT_libpng=qt' '-DINPUT_system_zlib=no' '-DINPUT_openssl=linked' '-G' 'Ninja' '/Users/martin/workspace/qt6_local_build/src/qt6'I get the message:
-- Looking for a OBJC compiler -- Looking for a OBJC compiler - NOTFOUND -- Looking for a OBJCXX compiler -- Looking for a OBJCXX compiler - NOTFOUNDand later on when trying to build, there are multiple failure with:
error: Objective-C was disabled in PCH file but is currently enabledThere seems to be a problem when the CMake macro
check_languageis called. If I modify the macroqt_enable_cmake_languagesinqtbase/cmake/QtBuildInternals/QtBuildInternalsConfig.cmakeso thatOBJCandOBJCXXare appended to__qt_required_language_listinstead of__qt_optional_language_list, the build succeeds.Is there anything I should pass to
configureto get this working without changing the code?CMake version is 3.25.
XCode 13.2.1
MacOS 11.7 Big SurI created a ticket https://bugreports.qt.io/browse/QTBUG-110249
-
The problem was that my build script was setting
LD_FLAGSandCFLAGSto include:-arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.2.sdk -miphoneos-version-min=7.0These were necessary to build OpenSSL and SQLCipher but were breaking the OBJC compiler check when configuring the Qt build.