[ios] Xcode 빌드 설정에서 “아키텍처”와 “유효한 아키텍처”의 차이점은 무엇입니까?

그 의미는 무엇이며 다른 값으로 설정할 수 있습니까?



답변

아키텍처는 빌드하려는 아키텍처이고 유효한 아키텍처는 코드베이스로 빌드 할 수있는 아키텍처입니다.

따라서 armv7s 용 바이너리 만 빌드하고 싶을 수도 있지만 armv7 및 armv6 용으로 동일한 소스 코드가 잘 컴파일됩니다. 그래서 VALID_ARCHS = armv6 armv7 armv7s,하지만 ARCHS = armv7s그게 실제로 코드로 빌드 하려는 전부이기 때문에 설정 합니다.

또는 Apple-ese에서 :

ARCHS (아키텍처)

공백으로 구분 된 식별자 목록입니다. 바이너리가 대상이되는 아키텍처 (ABI, 프로세서 모델)를 지정합니다. 이 빌드 설정이 둘 이상의 아키텍처를 지정하면 생성 된 바이너리에 지정된 각 아키텍처에 대한 개체 코드가 포함될 수 있습니다.

과:

VALID_ARCHS (유효한 아키텍처)

공백으로 구분 된 식별자 목록입니다. 바이너리를 빌드 할 수있는 아키텍처를 지정합니다. 빌드 중에이 목록은 ARCHS 빌드 설정 값과 교차합니다. 결과 목록은 바이너리가 실행할 수있는 아키텍처를 지정합니다. 결과 아키텍처 목록이 비어있는 경우 대상은 바이너리를 생성하지 않습니다.

출처 : Xcode 빌드 설정 참조

실제로는 그대로두고 VALID_ARCHS변경하는 것에 대해 걱정하지 않고 ARCHS빌드하려는 아키텍처를 설정하기 위해 조작합니다. 일반적으로 NATIVE_ARCH테스트 / 실행할 머신에 대한 디버그 버전 만 빌드하고 지원하려는 전체 아키텍처에 대한 릴리스 빌드를 원하기 때문에 디버그 빌드를 just로 설정합니다 .


답변

애플의 문서에서, 우리는 바이너리 엑스 코드의 뜻 빌드 목록입니다 알고 Valid Architectures 와 교차 Architectures.

그래서 나는 Jeremy의 대답이 옳지 않다고 생각합니다.

따라서 armv7s 용 바이너리 만 빌드하고 싶을 수도 있지만
armv7 및 armv6 용으로 동일한 소스 코드가 잘 컴파일됩니다. 그래서 VALID_ARCHS = armv6 armv7 armv7sARCHS = armv7s로 설정했습니다. 그게 실제로 코드로 빌드하려는 전부이기 때문입니다.

설정 VALID_ARCHS = armv6 armv7 armv7s하고 설정 ARCHS = armv7s하면 바이너리 Xcode가 빌드되는 결과는 armv7s이며 armv6 / armv7과 호환되지 않습니다.

그리고 armv6 / armv7 / armv7s와 호환되도록하려면 VALID_ARCHS = armv6 armv7 armv7s및을 설정해야합니다 ARCHS = armv6. 이런 식으로 바이너리 Xcode의 결과는 armv6이고 arm 프로세서가 하위 호환되므로 armv6 / armv7 / armv7s 모두에서 제대로 실행될 수 있습니다. .


답변