有没有 Objective-C 语法检查器?
我已经尝试过gcc -fsyntax-only
,但这并不是真正的“仅语法”。如果在引用外部框架的单个实现文件上运行,它仍然会产生错误。
我正在寻找可以对单个头文件或实现文件执行语法检查而无需尝试链接或生成目标文件的东西。
可以gcc
使用我不知道的其他标志来执行此操作,还是有其他工具可以完成此任务?
我想从命令行执行此操作。xcodebuild 可以为单个文件执行此操作吗?为整个项目运行 xcodebuild 来检查一个文件的语法有点多。
有没有 Objective-C 语法检查器?
我已经尝试过gcc -fsyntax-only
,但这并不是真正的“仅语法”。如果在引用外部框架的单个实现文件上运行,它仍然会产生错误。
我正在寻找可以对单个头文件或实现文件执行语法检查而无需尝试链接或生成目标文件的东西。
可以gcc
使用我不知道的其他标志来执行此操作,还是有其他工具可以完成此任务?
我想从命令行执行此操作。xcodebuild 可以为单个文件执行此操作吗?为整个项目运行 xcodebuild 来检查一个文件的语法有点多。
如果不知道您正在使用的框架的头文件,它就无法检查语法。您需要使用 -framework 标志来包含相关的头文件。
您可以尝试使用 clang -fsyntax-only,特别是如果您使用的是 10.6/Xcode 3.2。Clang/LLVM 在解析器和编译器链的其他部分之间有更好的分离。您可以在 /Developer/usr/bin 中找到 clang。
因此,在浏览了gcc
手册页之后,我发现了一个-F
标志,它允许您将框架目录添加到目录列表中以gcc
搜索头文件。
这解决了我的问题。
像这样使用它:gcc -fsyntax-only -ObjC -F/Path/To/A/Framework -F/Path/To/Another/Framework File.m
您可以使用 Build->Compile (cmd-K) 在 Xcode[1] 中编译单个文件,这实际上是一种语法检查(没有链接步骤)。
[1] 我假设您使用的是 Xcode,因为在没有 OS X(实际上是 Cocoa 框架)的情况下使用 Objective-C 毫无意义。