ошибка: целевая среда выполнения Objective-C отличается в файле PCH от текущего файла

Я пытаюсь скомпилировать файл Objective-C или .m с помощью командной строки (сгенерированной CMake) для Catalyst, но у меня две ошибки компиляции!

1. Каждый раз, когда я включаю Catalyst одним из следующих флагов:

-target x86_64-apple-ios-macabi
-target x86_64-apple-ios13.0-macabi
-target x86_64-apple-ios13.5-macabi
-target x86_64-apple-ios13.7-macabi

2. Затем выполните принудительную перестройку (щелкните Clean Build Folder, затем Build).

3. Сборка завершается ошибкой:

fatal error: 'UIKit/UIKit.h' file not found

4. Но как только я переключаюсь на 13.6, я имею в виду, что поменяю флаг на:

-target x86_64-apple-ios13.6-macabi

5. Затем выполните принудительную перестройку, я получаю новую ошибку:

error: target Objective-C runtime differs in PCH file vs. current file

Обратите внимание, что я не использую какой-либо файл PCH, и обе ошибки кажутся совершенно запутанными.

Кроме того, я искал и нашел сообщение, похожее на вторую ошибку, но предложенное исправление (а именно переход на 13.6) является причиной второй ошибки. (Должен был исправить, пока не срабатывает).


person Top-Master    schedule 18.06.2021    source источник


Ответы (1)


После захвата полной командной строки Xcode я заметил, что у нее есть флаг -x objective-c, а у моего CMake нет!

После поиска (о том, как CMake поддерживает Obj-C), нашел актуальную ошибку!

1. По сути, CMake требовал, чтобы я делал что-то вроде:

project(MyProject C CXX OBJC OBJCXX)

Вместо того:

project(MyProject)

2. Также следует добавить флаги Obj-C в CMAKE_OBJC_FLAGS вместо CMAKE_C_LINK_FLAGS переменной.

3. Теперь CMake автоматически добавляет отсутствующий флаг -x objective-c, и мне просто нужно добавить свои собственные флаги.


Полная командная строка Xcode:

-x objective-c -target x86_64-apple-ios13.6-macabi -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -fobjc-arc -fmodules -gmodules -fmodules-cache-path=/Users/admin/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -fmodules-prune-interval=86400 -fmodules-prune-after=345600 -fbuild-session-file=/Users/admin/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/Session.modulevalidation -fmodules-validate-once-per-build-session -fmodule-name=MyProject -fapplication-extension -fpascal-strings -O0 -fno-common -DDEBUG=1 -DOBJC_OLD_DISPATCH_PROTOTYPES=0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -fasm-blocks -fstrict-aliasing -g -fprofile-instr-generate -fcoverage-mapping -index-store-path /MyBuildDir/Index/DataStore -iquote /MyBuildDir-cofig/MyProject-generated-files.hmap -I/MyBuildDir-cofig/MyProject-own-target-headers.hmap -I/MyBuildDir-cofig/MyProject-all-non-framework-target-headers.hmap -ivfsoverlay /MyBuildDir-cofig/all-product-headers.yaml -iquote /MyBuildDir-cofig/MyProject-project-headers.hmap -I/MyProductDir/include -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/iOSSupport/usr/include -I/MyBuildDir-cofig/DerivedSources-normal/x86_64 -I/MyBuildDir-cofig/DerivedSources/x86_64 -I/MyBuildDir-cofig/DerivedSources -F/MyProductDir -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/iOSSupport/System/Library/Frameworks -MMD -MT dependencies -MF /MyBuildDir-cofig/Objects-normal/x86_64/my-source.d --serialize-diagnostics /MyBuildDir-cofig/Objects-normal/x86_64/my-source.dia -c /Users/admin/my-project/my-source.m -o /MyBuildDir-cofig/Objects-normal/x86_64/my-source.o

Обратите внимание, что я заменил пути на сокращенные выше, например:

MyBuildDir        => /Users/admin/Library/Developer/Xcode/DerivedData/MyProject-gczfeuobxydqjrfbdhwzpqjsseyr

MyBuildDir-config => /Users/admin/Library/Developer/Xcode/DerivedData/MyProject-gczfeuobxydqjrfbdhwzpqjsseyr/Build/Intermediates.noindex/MyProject.build/Debug-maccatalyst/MyProject.build/

MyProductDir      => /Users/admin/Library/Developer/Xcode/DerivedData/MyProject-gczfeuobxydqjrfbdhwzpqjsseyr/Build/Products/Debug-maccatalyst
person Top-Master    schedule 18.06.2021