Odpowiedzi:
Architektury to te, które chcesz zbudować, prawidłowe architektury to te, które możesz wymyślić przy użyciu bazy kodu.
Więc może chcesz zbudować swój plik binarny tylko dla armv7s, ale ten sam kod źródłowy skompilowałby się dobrze dla armv7 i armv6. Tak VALID_ARCHS = armv6 armv7 armv7s
, ale ustawiasz, ARCHS = armv7s
ponieważ to wszystko, co chcesz zbudować za pomocą swojego kodu.
Lub w Apple-ese:
ARCHS (architektury)
Lista identyfikatorów oddzielona spacjami. Określa architektury (ABI, modele procesorów), do których jest przeznaczony plik binarny. Gdy to ustawienie kompilacji określa więcej niż jedną architekturę, wygenerowany plik binarny może zawierać kod obiektowy dla każdej z określonych architektur.
i:
VALID_ARCHS (prawidłowe architektury)
Lista identyfikatorów oddzielona spacjami. Określa architektury, dla których można zbudować plik binarny. Podczas budowania lista ta jest przecinana z wartością ustawienia kompilacji ARCHS; wynikowa lista określa architektury, na których może działać plik binarny. Jeśli wynikowa lista architektur jest pusta, cel nie generuje pliku binarnego.
Źródło: odniesienie do ustawień kompilacji Xcode
W praktyce zostawiasz się w VALID_ARCHS
spokoju i nie martwisz się, że go zmieniasz, i po prostu bawisz ARCHS
się, ustawiając architektury, które chcesz zbudować. Zwykle ustawiasz kompilację debugowania na just NATIVE_ARCH
, ponieważ chcesz tylko zbudować wersję debugowania dla maszyny, na której będziesz ją testować / uruchamiać, i kompilacje wydania dla pełnego spektrum architektur, które planujesz obsługiwać.
Z dokumentu Apple wiemy, że binarny Xcode zbuduje listę Valid Architectures
przecinaną z Architectures
.
Więc nie sądzę, że odpowiedź Jeremy'ego jest właściwa, jak powiedział:
Więc może chcesz zbudować swój plik binarny tylko dla armv7s, ale ten sam kod źródłowy
skompilowałby się dobrze dla armv7 i armv6. Tak więcVALID_ARCHS = armv6 armv7 armv7s
, ale ustawiasz ARCHS = armv7s, ponieważ to wszystko, co chcesz zbudować za pomocą swojego kodu.
Kiedy ustawisz VALID_ARCHS = armv6 armv7 armv7s
i ustawisz ARCHS = armv7s
, wynikiem binarnego Xcode będzie armv7s , nie może być kompatybilny z armv6 / armv7.
A jeśli chcesz być kompatybilny z armv6 / armv7 / armv7s , musisz ustawić VALID_ARCHS = armv6 armv7 armv7s
i ARCHS = armv6
.W ten sposób wynik binarnego Xcode to armv6 i może działać dobrze na obu armv6 / armv7 / armv7s, ponieważ procesor arm jest kompatybilny wstecz .