2010-05-04 5 views
9

몇 가지 혼란스러운 속성이있는 프로젝트에서 작업하도록되어 있습니다.Xcode의 특정 파일에 대한 특정 컴파일러 플래그

프로젝트는 iPhone Simulator와 iPhone 장치에 대해 동일한 컴파일 설정으로 컴파일되지 않는 특성을 가지고 있습니다. 타겟 플랫폼에 따라 x86 또는 arm6/7 용으로 특별히 컴파일해야 할 필요가 있다고 생각합니다.

그래서 프로젝트의 빌드 설정은 Xcode의 빌드 설정보기에서 특정 파일마다 특정 컴파일러 플래그를 설정할 수 없습니다.

CE7FEB5710F09234004DE356 /* MyFile.m in Sources */ = {isa = PBXBuildFile; fileRef = CE7FEB5510F09234004DE356 /* MyFile.m */; settings = {COMPILER_FLAGS = "-fasm-blocks -marm -mfpu=neon"; }; }; 

손으로 프로젝트 파일을 편집하지 않고이 작업을 수행 할 수있는 방법이 있나요 : 그러나,이 프로젝트에 근무 이전 개발자는 어떻게 든 줄을 선언했다? 프로젝트 파일을 편집하면 완전히 깨지는 결과를 낳을 수 있으므로 이전 개발자만큼 알지 못해서 오히려 그렇게하지 않을 것입니다.

그래서 명확하게, 질문은 : 나는 -fasm-blocks 플래그를 제거하지 않는 한 시뮬레이터 컴파일 할 때

빌드가 실패합니다. -fasm-blocks 플래그를 추가하지 않으면 장치 용으로 컴파일 할 때 빌드가 실패합니다. 수동으로 프로젝트 파일을 편집하지 않고 파일 당이 플래그를 설정하는 방법이 있습니까? 다음과 같이

+0

asm 코드를 필터링하려면'#if! TARGET_IPHONE_SIMULATOR'을 사용할 수 있습니다. – kennytm

답변

7

개별 소스 파일에 대한 추가 컴파일러 플래그를 정의 할 수 있습니다 :

  • 가 먼저
  • 을 "정보 입수"를 선택 오른쪽 소스 파일을 클릭
  • 를 구축하고자하는 대상을 선택 은 "빌드"탭에서
  • 클릭
  • 은 추가 컴파일러 플래그를 정의

그러나 실제로는 더 나은 솔루션 인 것처럼 들리 겠지만 목표를 복제하고 실제 장치와 시뮬레이터 용으로 두 개의 목표를 갖는 것입니다. 프로젝트 수준에서 일반적인 빌드 설정을 상속하고 필요에 따라 대상 별 빌드 설정을 조정하십시오.

+0

감사! 이렇게하면 컴파일 플래그를 자동화하는 방법을 묻는 다른 질문에 대답 할 수 있습니다. 컴파일 소스 단계 전에 실행되는 실행 스크립트 단계를 설정하고 대상 플랫폼 환경 변수의 출력을 기반으로 컴파일러 플래그 환경 변수의 값을 설정할 수 있습니다. 컴파일러 플랫은 하나의 특정 파일에만 설정해야하기 때문에 두 개의 타겟을 설정하고 프로젝트 전체 컴파일러 플래그를 생성하는 것이 과도하다고 생각합니다. – Jasarien

2

특정 파일의 GetInfo를 호출하면이 파일에 대한 빌드 설정을 지정할 수 있습니다. 이에 대한 Xcode 프로젝트 관리 가이드를 참조하십시오. 여호수아 Nozzi에 의해

6

This 블로그 게시물 그는 말한다 엑스 코드 4,이 작업을 수행하는 방법에 대해 설명합니다

... 관련 대상을 선택, 프로젝트 네비게이터에서 프로젝트를 선택 (당신은 하나를 가질 수있다) 다음 Build Phases (빌드 단계) 탭을 선택합니다. 컴파일 소스 단계와 비올라를 확장하십시오! 컴파일러 플래그 열을 사용하면 해당 대상에 대한 각 파일의 플래그를 설정할 수 있습니다.

관련 문제