#objective-c #macos #cmake #sdl-2
#цель-c #macos #cmake #sdl-2
Вопрос:
В одном из моих проектов я использую подмодули git для загрузки библиотеки SDL2 и ее компиляции. Это дает мне странную ошибку, поэтому я попытался скомпилировать SDL2 автономно и получил ту же ошибку.
Я на 13-дюймовом MacBook Pro Big Sur
Шаги по воспроизведению:
git clone https://github.com/libsdl-org/SDL.git cd SDL cmake . -Bbuild make -C ./build
Ошибка, которую я получаю, такова
In file included from /Users/lt;usergt;/Documents/side side projects/neural networks/libs/SDL/src/file/cocoa/SDL_rwopsbundlesupport.m:24: In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:12: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSBundle.h:91:143: error: function does not return NSString - (NSAttributedString *)localizedAttributedStringForKey:(NSString *)key value:(nullable NSString *)value table:(nullable NSString *)tableName NS_FORMAT_ARGUMENT(1) NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(12.0), ios(15.0), watchos(8.0), tvos(15.0)); ~~~~~~~~~~~~~~ ^ ~ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:103:48: note: expanded from macro 'NS_FORMAT_ARGUMENT' #define NS_FORMAT_ARGUMENT(A) __attribute__ ((format_arg(A))) ^ ~ 1 error generated. make[2]: *** [libs/SDL/CMakeFiles/SDL2.dir/src/file/cocoa/SDL_rwopsbundlesupport.m.o] Error 1 make[1]: *** [libs/SDL/CMakeFiles/SDL2.dir/all] Error 2 make: *** [all] Error 2
Из сообщения следует, что собственные файлы SDK Apple не компилируются, но это не может быть правдой. Что еще более странно, так это то, что я использую подмодули git с SDL2 в другом проекте, но он успешно компилируется, и я не могу найти никакой заметной разницы между этим и другим проектом.
Редактировать: Я пользователь make -C ./build VERBOSE=1
, чтобы сравнить выходные данные с проектом, который успешно скомпилирован, и проектом, который не удалось скомпилировать.
Успешно скомпилирован:
[ 0%] Building C object libs/SDL/CMakeFiles/SDL2.dir/src/file/cocoa/SDL_rwopsbundlesupport.m.o cd "/Users/lt;usergt;/Documents/side side projects/Legion/build/libs/SDL" amp;amp; /usr/local/opt/llvm/bin/clang -DSDL2_EXPORTS -DUSING_GENERATED_CONFIG_H -I"/Users/lt;usergt;/Documents/side side projects/Legion/build/libs/SDL/include" -I"/Users/lt;usergt;/Documents/side side projects/Legion/libs/SDL/include" -g -O3 -idirafter "/Users/lt;usergt;/Documents/side side projects/Legion/libs/SDL/src/video/khronos" -D_THREAD_SAFE -msse3 -msse2 -msse -m3dnow -mmmx -Wshadow -fvisibility=hidden -Wdeclaration-after-statement -Werror=declaration-after-statement -fno-strict-aliasing -Wall -fPIC -F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/System/Library/Frameworks -o CMakeFiles/SDL2.dir/src/file/cocoa/SDL_rwopsbundlesupport.m.o -c "/Users/lt;usergt;/Documents/side side projects/Legion/libs/SDL/src/file/cocoa/SDL_rwopsbundlesupport.m" Take note of: -F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/System/Library/Frameworks
Не удалось скомпилировать:
[ 0%] Building C object CMakeFiles/SDL2.dir/src/file/cocoa/SDL_rwopsbundlesupport.m.o /usr/local/opt/llvm/bin/clang -DSDL2_EXPORTS -DUSING_GENERATED_CONFIG_H -I/Users/lt;usergt;/Desktop/SDL-main/build/include -I/Users/lt;usergt;/Desktop/SDL-main/include -idirafter "/Users/lt;usergt;/Desktop/SDL-main/src/video/khronos" -I/usr/local/Cellar/libusb/1.0.24/include/libusb-1.0 -D_THREAD_SAFE -msse3 -msse2 -msse -m3dnow -mmmx -Wshadow -fvisibility=hidden -Wdeclaration-after-statement -Werror=declaration-after-statement -fno-strict-aliasing -Wall -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk -mmacosx-version-min=11.5 -fPIC -o CMakeFiles/SDL2.dir/src/file/cocoa/SDL_rwopsbundlesupport.m.o -c /Users/lt;usergt;/Desktop/SDL-main/src/file/cocoa/SDL_rwopsbundlesupport.m Take note of: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.0.sdk
Ответ №1:
Единственное различие между успешно скомпилированным проектом и проектом, который не удалось скомпилировать, — это версия SDK для macOS. Тот, который не смог скомпилировать, использовал macOS SDK 12, в то время как успешный использовал macOS 11.3. До тех пор, пока это не будет исправлено, временное решение-понизить ваш macOS SDK до 11.3.