programing

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

abcjava 2023. 5. 6. 14:00
반응형

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

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

아키텍처는 당신이 구축하고자 하는 것이고, 유효한 아키텍처는 당신이 코드베이스로 구축할 수 있는 것들입니다.

따라서 armv7용 바이너리만 구축하고 싶지만 armv7 및 armv6용 소스 코드는 동일하게 컴파일할 수 있습니다.그렇게VALID_ARCHS = armv6 armv7 armv7s하지만 당신은 설정합니다.ARCHS = armv7s코드로 만들고 싶은 건 그게 전부이기 때문입니다

또는 Apple-eese:

ARCHS(아키텍처)

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

그리고:

VALID_ARCHS(유효한 아키텍처)

공백으로 구분된 식별자 목록입니다.이진을 빌드할 수 있는 아키텍처를 지정합니다.빌드하는 동안 이 목록은 ARCHS 빌드 설정 값과 교차되며, 결과 목록은 이진을 실행할 수 있는 아키텍처를 지정합니다.결과 아키텍처 목록이 비어 있으면 대상은 이진을 생성하지 않습니다.

소스: Xcode 빌드 설정 참조

실제로, 당신은 떠나는 것입니다.VALID_ARCHS바꿀 혼자그고그바것꾸것는에대해걱말정지다고그니만립냥지거작하리을▁fid▁alonedle▁with다.ARCHS빌드할 아키텍처를 설정할 수 있습니다. " 일적으디다설로음다니정합으빌"로 합니다.NATIVE_ARCH테스트/실행할 시스템에 대한 디버그 버전만 빌드하고 릴리스는 지원할 모든 아키텍처에 대해 빌드합니다.

은 애가문서에서, 리바너 Xcode드빌것다있라는 것을 알고 .Valid Architectures와교하는과 하는.Architectures.

그래서, 저는 제레미의 대답이 옳다고 생각하지 않습니다. 그는 이렇게 말합니다.

것입니다. 같은 코드는 armv7과 armv7과 같은 것입니다.
및armv7에 대해 합니다. 는 fine입니다.그렇게VALID_ARCHS = armv6 armv7 armv7s하지만 ARCHS = armv7s를 설정하는 것은 코드로 빌드하려는 것이 그것뿐이기 때문입니다.

을 할 때VALID_ARCHS = armv6 armv7 armv7s및 set , 및집합ARCHS = armv7s, 결과는 되지 않습니다.armv7s의 armv6/armv7과 호환되지 않습니다.

그리고 armv6/armv7/armv7s와 호환하려면 armv7s를 설정해야 합니다.VALID_ARCHS = armv6 armv7 armv7s그리고.ARCHS = armv6.이런 식으로 바이너리 Xcode 빌드의 결과는 armv6이며 armv6/armv7/armv7/armv7 모두에서 암 프로세서가 역호환되므로 정상적으로 실행할 수 있습니다.

프리코드 12 시대

VALID_ARCHS다음과 같은 워크플로우를 지원할 수 있습니다.

  • 대상에 VALID_ARCS를 설정합니다.
  • xcodebuild를 호출할 때 빌드할 아치를 통과합니다.xcodebuild ARCHS=...바이너리에 포함할 아키텍처를 지정합니다(범용 아키텍처일 수 있음).

Xcode는 두 개의 교차점을 가지고 그들을 위한 타겟을 구축할 것입니다.대상이 지원만 한다고 상상해 보십시오.arm64대부분의 대상이 지원하는 반면x86_64그리고.arm64호출xcodebuild ARCHS="x86_64 arm64"다음과 같은 상황이 발생합니다.

  • 대상을 설정합니다.VALID_ARCHS=arm64
  • xcode 빌드 세트ARCHS대상:arm64 x86_64
  • 교차로에 대한 대상이 작성됩니다.arm64

하지만, 만약 당신이 사용한다면.ARCHS이렇게 됩니다.

  • 대상을 설정합니다.ARCHS=arm64
  • xcodebuild 덮어쓰기ARCHS로.arm64 x64
  • 대상 구축 대상:arm64그리고.x86_64<- 당신이 원했던 것이 아닙니다.

xcode 12 시대 이후

https://developer.apple.com/documentation/xcode-release-notes/xcode-12-release-notes

VALID_ARCHS사용되지 않습니다.대신EXCLUDED_ARCHS일부 아키텍처를 제외하려면 대상에 사용해야 합니다.

이제 동일한 워크플로우를 수행하기 위해 설정합니다.DISABLED_ARCHS=x86_64전술한 목표에 대하여

언급URL : https://stackoverflow.com/questions/12701188/whats-the-difference-between-architectures-and-valid-architectures-in-xcode

반응형