如何将CLI目标添加到XCode中的GUI项目3.2.6

问题描述:

我开始研究构建OS X应用程序的项目,其中一个组件是文件扫描器&解析器。到目前为止,这是我一直在努力的主要部分。为了测试它,在我深入研究这个项目之前,我想建立一个命令行程序,我可以提供字符串和/或文件,以确保它实际上正确扫描&解析。所以我使用了Add New Target和选择的Cocoa Shell Tool。在该目标中,我添加了解析器的相关文件,确保它链接'Cocoa.framework'...如何将CLI目标添加到XCode中的GUI项目3.2.6

当我试图预编译'/ Developer/SDKs/MacOSX10时,我得到了11,000多个错误.6.sdk /系统/资源库/框架/ AppKit.framework /头/ AppKit.h”。

我完全在错误的轨道上如何添加命令行目标?

(有人问之前,没有时,Xcode 4是不是一种选择。这台机器是不会离开10.6.8任何时间很快。)

嗯,我从来没有发现如何做到这一点,但我找到了合理的替代品。

在Info.plist中,创建一个LSEnvironment字典,其中包含一些键/值对。我用'GUILaunch = true'。此环境变量只有在launchd启动时才可用,而不是在shell中直接启动时可用。

在main.m文件:

int main(int argc, char *argv[]) 
{ 
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
    NSDictionary *env = [[NSProcessInfo processInfo] environment]; 
    NSString *gui = [env objectForKey:@"GUI_Launch"]; 
    if ((gui!=nil) && [gui isEqual:@"true"]) { 
     [env release]; 
     [gui release]; 
     return NSApplicationMain(argc, (const char **) argv); 
    } else { 
     [env release]; 
     [gui release]; 
     return main2(argc, argv); 
    } 
    [pool release]; 
} 

现在,标准的GUI位被称为,或MAIN2被调用,基于它是如何启动。