在为iOS构建qt应用程序中找不到“ string.h”消息

时间:2018-10-19 09:43:03

标签: c++ ios xcode qt build

我最近将Xcode更新为版本10.0,然后,当我尝试为iOS构建版本时,出现以下问题。

  

1:04:17:Diasteca项目的运行步骤...   11:04:17:开始:“ / Users / belladellifabio / Qt / 5.11.1 / ios / bin / qmake” /Users/belladellifabio/Desktop/QtProjects/Diasteca/mqtt_test/mqtt_test.pro -spec macx-ios-clang CONFIG + = iphoneos CONFIG + =设备CONFIG + = qml_debug   项目消息:该项目正在使用专用头,因此将绑定到此特定的Qt模块构建版本。   项目消息:在其他版本的Qt模块上运行此项目可能会在任何时候崩溃。   项目消息:这不是bug,而是使用Qt内部的结果。你被警告了!   11:04:18:进程“ /Users/belladellifabio/Qt/5.11.1/ios/bin/qmake”正常退出。   11:04:18:开始:“ / usr / bin / make” qmake_all   make:对qmake_all不需要做任何事情。   11:04:18:进程“ / usr / bin / make”正常退出。   11:04:18:开始:“ / usr / bin / make”   /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -pipe -stdlib = libc ++ -g -fPIC -std = gnu ++ 11 -arch arm64 -arch x86_64 -Xarch_arm64- miphoneos-version-min = 12.0 -Xarch_arm64 -isysroot / Applications / Xcode.app / Contents / Developer / Platforms / iPhoneOS.platform / Developer / SDKs / iPhoneOS11.3.sdk -Xarch_x86_64 -mios-simulator-version-min = 12.0- Xarch_x86_64 -isysroot / Applications / Xcode.app / Contents / Developer / Platforms / iPhoneSimulator.platform / Developer / SDKs / iPhoneSimulator11.3.sdk -fobjc-nonfragile-abi -fobjc-legacy-dispatch -fembed-bitcode-marker -Wall- W -DQT_COMPILER_SUPPORTS_SSE2 -DMQTT_TEST_LIBRARY -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_NETWORK_LIB -DQT_CORE_LIB -I ../../ Diasteca / mqtt_test -I。 -I ../../../../ Qt / 5.11.1 / ios / mkspecs / common / uikit -I ../../../../ Qt / 5.11.1 / ios / include -I ../../../../ Qt / 5.11.1 / ios / include / QtNetwork -I ../../../../ Qt / 5.11.1 / ios / include / QtCore /5.11.1 -I ../../../../ Qt / 5.11.1 / ios / include / QtCore / 5.11.1 / QtCore -I ../../../../ Qt /5.11.1/ios/include/QtCore -I。 -I ../../../../ Qt / 5.11.1 / ios / mkspecs / macx-ios-clang -o qmqttclient.o ../../Diasteca/mqtt_test/qmqttclient.cpp   clang:警告:没有这样的sysroot目录:'/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk'[-Wmissing-sysroot]   clang:警告:没有这样的sysroot目录:'/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.3.sdk'[-Wmissing-sysroot]   在../../Diasteca/mqtt_test/qmqttclient.cpp:30中包含的文件中:   在../../Diasteca/mqtt_test/qmqttclient.h:33中包含的文件中:   在../../Diasteca/mqtt_test/qmqttglobal.h:33中包含的文件中:   在../../../../Qt/5.11.1/ios/include/QtCore/qglobal.h:47中包含的文件中:   在/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/utility:202包含的文件中:   在/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cstring:61中包含的文件中:   /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/string.h:61:15:致命错误:找不到'string.h'文件

真正的问题可能不是找不到文件错误,而是与qty尝试使用不再安装在系统上的SDK来构建应用程序有关。这是qt问题吗?如何指定用于构建应用程序的iOS SDK版本?有可能吗?

3 个答案:

答案 0 :(得分:0)

Qt将SDK信息存储在生成输出和.pro.user文件的深处。 删除用户文件(如果您有自定义构建步骤,则可能要备份用户文件),完整的(阴影)构建树并修改.pro文件,以便没有QMAKE_MAC_SDK = macosx10.13这样的行。 / p>

然后调用qmake并再次构建您的项目,不一致的地方应该消失了。

答案 1 :(得分:0)

最后,我找到并删除了.qmake.cache和.qmake.stash文件。我已经重新启动QtCreator,现在看来可以了。

答案 2 :(得分:0)

当Qt期望的iOS SDK与您安装的iOS SDK不同时,会发生这种情况。例如,Qt 5.13.1期望使用iPhoneOS13.1.sdk,但我的Xcode当前具有iPhoneOS13.2.sdk:

$ cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
$ ls -l
total 0
drwxrwxr-x  7 root  wheel  224 Nov  5  2019 iPhoneOS.sdk
lrwxr-xr-x  1 root  wheel   12 Jan 15  2020 iPhoneOS13.2.sdk -> iPhoneOS.sdk
$ cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs
$ ls -l
total 0
drwxrwxr-x  8 root  wheel  256 Jul 22 14:14 iPhoneSimulator.sdk
lrwxr-xr-x  1 root  wheel   19 Jan 15  2020 iPhoneSimulator13.2.sdk -> iPhoneSimulator.sdk

要解决此问题,我们可以让Qt使用iPhoneOS13.2.sdk:

$ cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
$ ls -l
total 0
drwxrwxr-x  7 root  wheel  224 Nov  5  2019 iPhoneOS.sdk
lrwxr-xr-x  1 root  wheel   12 Jan 15  2020 iPhoneOS13.2.sdk -> iPhoneOS.sdk
$ sudo ln -s iPhoneOS.sdk iPhoneOS13.1.sdk
$ ls -l
total 0
drwxrwxr-x  8 root  wheel  256 Jul 22 14:20 iPhoneOS.sdk
lrwxr-xr-x  1 root  wheel   12 Jul 22 14:20 iPhoneOS13.1.sdk -> iPhoneOS.sdk
lrwxr-xr-x  1 root  wheel   12 Jan 15  2020 iPhoneOS13.2.sdk -> iPhoneOS.sdk
$ cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs
$ ls -l
total 0
drwxrwxr-x  8 root  wheel  256 Jul 22 14:14 iPhoneSimulator.sdk
lrwxr-xr-x  1 root  wheel   19 Jan 15  2020 iPhoneSimulator13.2.sdk -> iPhoneSimulator.sdk
$ sudo ln -s iPhoneSimulator.sdk iPhoneSimulator13.1.sdk
$ ls -l
total 0
drwxrwxr-x  8 root  wheel  256 Jul 22 14:14 iPhoneSimulator.sdk
lrwxr-xr-x  1 root  wheel   19 Jul 22 14:39 iPhoneSimulator13.1.sdk -> iPhoneSimulator.sdk
lrwxr-xr-x  1 root  wheel   19 Jan 15  2020 iPhoneSimulator13.2.sdk -> iPhoneSimulator.sdk