SDL2 не компилируется в macos Big Sur

#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.