Jakie jest ich znaczenie i czy mogę ustawić je w różnych wartościach?Jaka jest różnica między "Architekturami" i "Prawidłowymi Architekturami" w Ustawieniach kompilacji Xcode?
Odpowiedz
architektury są te, które chcą budować, architektury ważne są te można wyobrazić sobie budowanie ze swoim kodzie.
Więc może chcesz tylko zbudować binarny dla armv7s, ale ten sam kod źródłowy będzie skompilować grzywny za ARMv7 i armv6. Tak więc VALID_ARCHS = armv6 armv7 armv7s
, ale ustawiłeś ARCHS = armv7s
, ponieważ to wszystko, co chcesz, , chcesz zbudować za pomocą kodu.
Lub, Apple wiatru:
Łuki (architektury)
spacjami lista identyfikatorów. Określa architektury (ABI, modele procesorów), na które kierowany jest 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.
oraz:
VALID_ARCHS (ważne architektur)
spacjami listy identyfikatorów. Określa architektury, dla których można zbudować plik binarny. Podczas kompilacji lista ta jest przecinana z wartością ustawienia kompilacji ARCHS; wynikowa lista określa architektury, na których może działać binarny. Jeśli wynikowa lista architektur jest pusta, cel nie generuje binarnego.
Źródło: Xcode Build Setting Reference
W praktyce zostawić VALID_ARCHS
sam i nie martwić się o zmianę, i po prostu pobawić się ARCHS
ustawić architektur chcesz zbudować. Zazwyczaj kompilację debugowania ustawia się na NATIVE_ARCH
, ponieważ chcesz tylko utworzyć wersję debugowania dla maszyny, na której będziesz testować/uruchamiać ją, i wydać kompilacje dla pełnego spektrum architektur, które zamierzasz obsługiwać.
Z dokumentu Apple wiemy, że binarny Xcode zbuduje listę Valid Architectures
przeciętą z Architectures
.
Więc nie sądzę, odpowiedź Jeremy'ego ma rację, gdy mówią:
Więc może chcesz tylko zbudować binarny dla armv7s, ale ten sam kod źródłowy będzie
skompilować grzywny za ARMv7 i armv6. Tak więcVALID_ARCHS = armv6 armv7 armv7s
, ale ustawiasz ARCHS = armv7s, ponieważ to wszystko, co chcesz zbudować za pomocą kodu.
Po ustawieniu VALID_ARCHS = armv6 armv7 armv7s
i ustaw ARCHS = armv7s
, wynik binarny Xcode zbuduje jest armv7s, może to nie jest kompatybilny z armv6/ARMv7.
A jeśli chcesz kompatybilny z armv6/armv7/armv7s, musisz ustawić VALID_ARCHS = armv6 armv7 armv7s
i ARCHS = armv6
.W ten sposób wynikiem binarnego Xcode będzie budowanie armv6 i może działać dobrze zarówno na armv6/armv7/armv7s, jak i na procesorach ramion.
Miał rację: "ponieważ to wszystko ** naprawdę chcesz zbudować ** z kodem." – Laszlo
Czy ktoś wie, gdzie można znaleźć tę "wynikową listę architektury" ????????? – DanMoore
@DanMoore "wynikowa lista architektury" jest wykonywana w pamięci w czasie kompilacji. – Saltymule
@ JeremyW.Sherman wydaje się, że VALID_ARCHS jest bezużyteczny? – onmyway133