Wymuś użycie xcodebuild tylko dla konkretnego zestawu SDK

2

Próbuję naprawić formułę homebrew, która używa xcodebuild zbudować zależność. Niestety zależność ta zależy od starszego zestawu SDK, MacOSX10.12.sdk. Nie mogę sprawić, by ten projekt używał nowszego zestawu SDK, ponieważ wymagałoby to ogromnej refaktoryzacji bazy kodu. Co więcej, ta biblioteka pochodzi od Apple i zdecydowali się na celowe upuszczenie jej w najnowszym SDK Xcode.

Na szczęście udało mi się znaleźć zestaw SDK, którego potrzebuję to repozytorium na Github. Jednak teraz nie wiem, jak zmusić xcodebuild korzystać z zestawu SDK, którego potrzebuję. Bez względu na to, jakie opcje lub zmienne ustawię, xcodebuild zawsze używa domyślnego zestawu SDK z Xcode.

Wersja używanego przeze mnie systemu to 10.12.6. Tak, mimo że sama wersja systemu to 10.12, Xcode odmawia użycia zestawu SDK, który pasuje do tej wersji.

Więc jak mogę zmusić xcodebuild korzystać z mojego starszego zestawu SDK w moim własnym katalogu?

GDP2
źródło

Odpowiedzi:

1

Uruchom xcodebuild w ten sposób:

xcodebuild -sdk "/path/to/sdk/" -project myproj.xcodeproj
jksoegaard
źródło
Próbowałem już -sdk flaga. xcodebuild wciąż wywołuje clang z flagami takimi jak -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk i -mmacosx-version-min=10.13. To również wywołuje libtool z MACOSX_DEPLOYMENT_TARGET=10.13 i -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk
GDP2
Czy na pewno nie ustawiłeś tych ścieżek do 10.13 SDK w samym xcodeproj?
jksoegaard
Nie jestem tego pewny. Gdzie mogę znaleźć te ścieżki w Xcode?
GDP2
W ustawieniach kompilacji - ale najpierw polecam przeglądanie plików projektu Xcode za pomocą prostego edytora tekstu.
jksoegaard
1
Dziękujemy za sugestie. Wygląda na to, że masz rację; w ustawieniach projektu staraj się zawsze używać najnowszego zestawu SDK i staraj się zawsze wdrażać do najnowszej wersji systemu. Na szczęście, ilovezfs (jeden z opiekunów homebrew) pomógł mi rozwiązać problem bez konieczności używania starszego SDK ustawiając niektóre zmienne środowiskowe. Wyjaśnia to tutaj. Próbowałem już robić to, co on zrobił, ale myślę, że spieprzyłem to, próbując użyć starszego SDK.
GDP2