Jakie jest ich znaczenie i czy mogę ustawić je na różne wartości?
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ą zArchitectures
.Więc nie sądzę, że odpowiedź Jeremy'ego jest właściwa, jak powiedział:
Kiedy ustawisz
VALID_ARCHS = armv6 armv7 armv7s
i ustawiszARCHS = 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
iARCHS = 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 .źródło