Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
548 views
in Technique[技术] by (71.8m points)

objective c - How to embed ParseKit as a private framework in a Mac App bundle

I need to install ParseKit to compile with cocoa under Mac Os X, I use xcode 4. I have searched online but there is only a guide for installing parse kit for iPhone. Where do I find the download for Mac Os X and/or a guide?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Developer of ParseKit here.

OK, after working through a tricky issue in Xcode 4, I have figured out my preferred way to do this: Create a new Workspace ("MySuite") which contains two sub-Projects

  • Your Mac Cocoa Application Project ("MyApp")
  • The ParseKit Framework Project ("ParseKit")

You can choose different names than "MyApp" and "MySuite" of course.

There's a few different ways to make this happen. Here's one way:

  1. First, make sure you update to the very latest version of the ParseKit from the Google Code trunk. I have recently modernized the Xcode project for Xcode 4.3.1.

    svn checkout http://parsekit.googlecode.com/svn/trunk/ parsekit-trunk

  2. Make sure you do not have the ParseKit Xcode Project window open. This is an issue in Xcode up to version 4.3.1 (and maybe later, not sure).

  3. Create a Mac "Cocoa Application" Project named "MyApp". File > New > Project…. (You may have already created your app. That's fine. Then skip this step.)
  4. Drag the ParseKit.xcodeproj file from the Finder to the very top of the Project Navigator in the "MyApp" Xcode Project window. NOTE: make sure you drop the file at the very top of the Project Navigator tree. Otherwise it will not work. Drag ParseKit Project To MyApp Project Navigator

  5. Xcode will present a dialog: "Do you want to save this project in a new workspace?" Click "Save" and name the Workspace something like "MySuite". Save Workspace

  6. Select the "MyApp" Project in the Project Navigtor.
  7. Select the "MyApp" Target in the "Targets" list.
  8. Select the "Build Phases" tab.
  9. Click the disclosure triangle next to "Target Dependencies" to open the list.
  10. Click the "+" button at the bottom of the list.
  11. Select "ParseKit.framework" from the resulting dialog and click "Add" to add ParseKit as a dependency of your target. This ensures ParseKit is built before your target.
  12. Click the disclosure triangle next to "Link Binary With Libraries" to open the list.
  13. Click the "+" button at the bottom of the list.
  14. Select "ParseKit.framework" from the resulting dialog and click "Add".
  15. Click the disclosure triangle next to "Link Binary With Libraries" to open the list.
  16. Click the "+" button at the bottom of the list.
  17. Select "ParseKit.framework" from the resulting dialog and click "Add".enter image description here

  18. See "ParseKit.framework" in the "Link Binary With Libraries" list. enter image description here

  19. Click the "Add Build Phase" Button, choose "Copy Files" in the popup.Add Build Phase
  20. In the new "Copy Files" build phase, select "Frameworks" in the "Destination" popup.Choose Frameworks in the Destination popup
  21. Drag "ParseKit.framework" from the Project Navigator to the list in the new "Copy Files" build phase.Drag ParseKit.framework to Copy Files build phase
  22. In MyAppDelegate.m, import the ParseKit header:

    #import <ParseKit/ParseKit.h>

  23. In -[MyAppDelegate applicationDidFinishLaunching:] do:

    NSString *g = @"@start = Word+;";
    PKParser *p = [[PKParserFactory factory] parserFromGrammar:g assembler:self error:nil];
    NSError *err = nil;
    id result = [p parse:@"foo bar baz" error:&err];
    NSLog(@"%@", result);
  24. Build and run.

For more info on this topic, see:


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...