Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 662
Ramy Al Zuhouri Avatar asked Mar 10 '12 19:03

Ramy Al Zuhouri


People also ask

Can I use MacOSX_bundle to create an app bundle?

I can see that I can use MACOSX_BUNDLE to create an app bundle, but that doesn’t do everything I want. So, I have two executable, exeA and exeB and both needs to be placed in MacOS folder. The exeA uses exeB and the exeB uses a Framework that it is liked to.

When should I use an installation package for my framework?

If your framework is external to an application, you should use an installation package to make sure it is put in the proper location. You should also use an installation package in situations where an older version of your framework might be in place.

Where do I install third party frameworks?

Third-party frameworks can go in a number of different file-system locations, depending on certain factors. Most public frameworks should be installed at the local level in /Library/Frameworks.

Where does Xcode install a framework?

When you build a framework, Xcode places it in the build subdirectory of your project directory by default. Although you can tell Xcode to install your framework in its final deployment location, during development you may want to leave it where it is.


1 Answers

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:

  • Apple's docs
  • Chapter 16 of Mastering Xcode 4 by Joshua Nozzi
like image 87
Todd Ditchendorf Avatar answered Sep 21 '22 05:09

Todd Ditchendorf