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

时间:2014-02-17 02:22:07

标签: xcode cocoa osx-snow-leopard

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

当我尝试预编译'/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/AppKit.framework/Headers/AppKit.h'时,我遇到了11,000多个错误。

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

(在任何人问之前,不,XCode 4不是一个选项。这台机器不会很快离开10.6.8。)

1 个答案:

答案 0 :(得分:1)

好吧,我从未发现如何做到这一点,但我找到了合理的替代品。

在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。