2009-09-22 4 views
0

Objective-C 구문 검사기가 있습니까?Objective-C 구문 검사기

나는 gcc -fsyntax-only을 시도했지만 정말로 '구문 만'이 아닙니다. 외부 프레임 워크에 대한 참조가있는 개별 구현 파일에서 실행하면 여전히 오류가 발생합니다.

개체 파일을 연결하거나 생성하지 않고 개별 헤더 또는 구현 파일에 대한 구문 검사를 수행 할 수있는 무언가를 찾고 있습니다.

gcc 내가 알지 못하는 추가 플래그를 사용하거나이 작업까지 다른 도구가 있습니까?

명령 줄에서이 작업을 수행하려고합니다. xcodebuild가 개별 파일에 대해이 작업을 수행 할 수 있습니까? 하나의 파일 구문을 검사하기 위해 전체 프로젝트에 대해 xcodebuild를 실행하는 것은 다소 어렵습니다.

답변

1

gcc 맨 페이지를 통해 트롤링 한 후 gcc이 헤더 파일을 검색 할 때 프레임 워크 디렉토리를 프레임 워크 디렉토리에 추가 할 수있는 -F 플래그를 발견했습니다.

내 문제가 해결되었습니다.

다음과 같이 사용하십시오. gcc -fsyntax-only -ObjC -F/Path/To/A/Framework -F/Path/To/Another/Framework File.m

0

사실상 구문 검사 인 Build-> Compile (cmd-K)을 사용하여 Xcode [1]에서 하나의 파일을 컴파일 할 수 있습니다 (연결 단계가 없음).

[1] Xcode를 사용하고 있다고 가정합니다. OS X이없는 Objective-C (코코아 프레임 워크)가 거의 필요하지 않습니다.

+0

명령 줄에서이 작업을 수행하려고합니다. xcodebuild가 개별 파일에 대해이 작업을 수행 할 수 있습니까? 하나의 파일 구문을 검사하기 위해 전체 프로젝트에 대해 xcodebuild를 실행하는 것은 다소 어렵습니다. 그에 따라 원래의 질문을 수정했습니다. – firstresponder

+0

Benno가 언급했듯이 clang이 도움이 될지 모르지만 확실하지 않습니다. 나는 컴파일 단계가 xcodebuild를 통해서만 호출 될 수 있는지 여부를 모른다. –

+0

그는 객체 파일을 생성하거나 링크하지 않고 구문 검사 만 요구했습니다. 솔루션이 링크되지 않는 동안 오브젝트 파일을 생성합니다. 그러나 스티븐의 대답은 * 거의 틀림 없습니다 (프레임 워크 대신 -iframework를 사용해야합니다). – Giel

1

특히 10.6/Xcode 3.2를 사용하는 경우 clang -fsyntax-only를 대신 사용해 볼 수 있습니다. Clang/LLVM은 파서와 컴파일러 체인의 다른 부분을 훨씬 더 잘 분리합니다./Developer/usr/bin에서 clang을 찾을 수 있습니다.

+0

Clang은 gcc와 동일한 오류를보고합니다. 구문을 검사하고 싶습니다. 헤더 파일에 포함 된 프레임 워크를 찾을 수 없기 때문에 불평하지 않기를 바랍니다. – firstresponder

+0

문제는 프레임 워크에 필요한 헤더가 포함되어 있으며 구문을 완전히 확인하기 위해 C 파생 언어에서 헤더의 데이터를 가져야한다는 것입니다. 그렇지 않으면 매크로 정의, 타입 정의 및 주어진 컴파일 유닛의 구문의 정확성에 기여하는 다른 것들이 부족할 것입니다. -framework 옵션을 추가하거나 -I를 사용하여 프레임 워크의 헤더 디렉토리 (예 : -I/개발자/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers)를 가져옵니다. Foundation 프레임 워크 용) – Benno

3

사용중인 프레임 워크의 헤더 파일에 대해 알지 못한 채 구문을 검사 할 방법이 없습니다. 관련 헤더 파일을 포함하려면 -framework 플래그를 사용해야합니다.

+0

대신에 -iframework를 사용한다고 생각합니다. http://gcc.gnu.org/onlinedocs/gcc/Darwin-Options.html#index-iframework-1169 – Giel