Important: The information in this document is obsolete and should not be used for new development.
Fairly early in your design process, you make decisions related to the type of product (application, library, command-line tool, and so on) and language or languages (C, C++, Objective-C, Java, and others) you plan to use. For a Mac OS X product, you also decide which Apple technologies to use, and whether to use an application framework, such as Cocoa or Java.
Once you’ve resolved these issues, you’ll find that Xcode provides a wide variety of project templates to support your goals. Table 3-1 provides brief descriptions for the project templates currently supplied by Xcode. You can find similar descriptions when you select a project template in the New Project Assistant in Xcode. When you add a target to a project, you’ll get a selection of targets to choose from that is similar to the list of available project templates. For more information on targets and target templates, see “Creating Targets.”
The project template you choose specifies a default target and it also determines the default source files, resources, framework references, and other information that Xcode includes automatically in the project. A project generally contains all the information it needs to build a product for its default target. This includes a minimal set of source files that you can compile into a running product, as well as default build settings.
Project template |
Use to create |
|---|---|
Empty Project |
A project with no files or targets. |
Action |
|
Automator actions are loadable bundles that perform discrete tasks for users to link together in a workflow, using the Automator application. For more information, see Automator Programming Guide . |
|
AppleScript Automator Action |
An Automator action written using AppleScript. |
Cocoa Automator Action |
An Automator action written in Objective-C. |
Application |
|
AppleScript Application |
An AppleScript Studio application: a simple Cocoa application which can be written in AppleScript, Objective-C, and other languages. |
AppleScript Document-based Application |
An AppleScript Studio application that uses the Cocoa document architecture. |
AppleScript Droplet |
An AppleScript Studio application that processes files dropped on it. |
Carbon Application |
An application, based on the Carbon framework, that uses nib files for resources (a nib file typically defines and lays out objects for a product’s graphical interface). |
Cocoa Application |
An application, based on the Cocoa framework, that is written in Objective-C and relies on nib files to define its graphical interface. |
Cocoa Document-based Application |
A Cocoa application that uses the Cocoa document architecture. |
Cocoa-Java Application |
A Cocoa application that is written in Java. |
Cocoa-Java Document-based Application |
A Cocoa application that is written in Java and uses the Cocoa document architecture. |
Core Data Application |
An application, based on the Cocoa framework, that is written in Objective-C and uses the Core Data framework to save and restore objects. For more information on the Core Data framework, see Data Modeling Guide and Core Data Programming Guide. |
Core Data Document-based Application |
A Core Data application that uses the Cocoa document architecture. |
Bundle |
|
A bundle is a file system directory that stores executable code and the software resources related to that code. Bundle templates are for loadable bundles—code (such as application plug-ins) that can be loaded when it is needed. For more information, see Bundle Programming Guide. |
|
Carbon Bundle |
A bundle that links against the Carbon framework. |
CFPlugin Bundle |
A bundle that links against the Core Foundation framework. |
Cocoa Bundle |
A bundle that links against the Cocoa framework. |
Command Line Utility |
|
A command-line tool is a utility without a graphical user interface. Command-line utilities are typically used in the command-line environment. |
|
C++ Tool |
A tool that links against the stdc++ library. |
CoreFoundation Tool |
A tool that links against the Core Foundation library. |
CoreServices Tool |
A tool that links against the Core Services library. |
Foundation Tool |
A tool that links against the Foundation framework. (Foundation is one of the frameworks in the Cocoa framework.) |
Standard Tool |
A tool written in C. |
Dynamic Library |
|
A dynamic library is a library for which binding of undefined symbols is delayed until execution; code in dynamic shared libraries can be shared by multiple, concurrently running programs. |
|
BSD Dynamic Library |
A dynamic library, written in C, that makes use of BSD (a part of the Mac OS X kernel environment; BSD stands for Berkeley Software Distribution) |
Carbon Dynamic Library |
A dynamic library that links against the Carbon framework. |
Cocoa Dynamic Library |
A dynamic library that links against the Cocoa framework. |
External Build System |
A project that contains no files but has a single target which you can configure to use any command-line build tool. |
Framework |
|
In Mac OS X, a framework is a hierarchical directory that encapsulates a dynamic library and shared resources in a single package. You access many Mac OS X technologies in Xcode through frameworks. For more information, see Framework Programming Guide. Note that Cocoa is an application framework—one which supplies the basic building blocks of an application, to which you add your own code and features—that is implemented as a framework (as defined above). |
|
Carbon Framework |
A framework that links against the Carbon framework. |
Cocoa Framework |
A framework that links against the Cocoa framework. |
Java |
|
Ant-based Application Jar |
An application, written in Java and built as a JAR file
( JAR is the Java Archive file format). The application is built
using the Ant build tool. The project contains a default |
Ant-based Empty Project |
An empty project with no files, that contains a single external
target configured to use the Ant build tool. You must supply the |
Ant-based Java Library |
A library, written in Java and packaged as a JAR file,
that is built using the Ant build tool. The project contains a default |
Java AWT Applet |
An AWT-based Java applet, built as a JAR file (AWT is the Advanced Windowing Toolkit). |
Java AWT Application |
An AWT-based application, built as an application bundle. |
Java JNI Application |
A JAR file-based JNI Application (JNI is the Java Native Interface). |
Java Swing Applet |
A Swing-based Java applet, built as a JAR file. |
Java Swing Application |
A Swing-based application, built as an application bundle. |
Java Tool |
A library or application, built as a JAR file. |
Kernel Extension |
|
A kernel extension (or KEXT) is a piece of code that can be dynamically loaded into the Mac OS X kernel. A driver is a kernel extension that supports one or more devices. |
|
Generic Kernel Extension |
A kernel extension. |
IOKit Driver |
A device driver that uses the I/O Kit (an object-oriented framework for developing device drivers for Mac OS X). |
Standard Apple Plug-ins |
|
Plug-ins for standard Apple applications, including Interface Builder, preference panes, the Screen Effects pane in System Preferences, and Sherlock. |
|
Address Book Action Plug-in for C |
A C-based plug-in that implements an Address Book action. See Address Book Programming Guide for more information. |
Address Book Action Plug-in for Objective-C |
An Objective-C-based plug-in that implements an Address Book action. |
AppleScript Xcode Plug-in |
An AppleScript-based plug-in for Xcode. |
IBPalette |
A plug-in for Interface Builder that adds a palette of user-interface items. |
Image Unit Plug-in for Objective-C |
An Objective-C-based plug-in that implements one or more image filters for Core Image. For more information on creating image units, see Core Image Programming Guide. |
Installer Plug-in |
An Objective-C-based plug-in that implements a custom interface for the Installer. |
Metadata Importer |
A metadata importer that allows Mac OS X to extract metadata from custom document formats for use with Spotlight. See Spotlight Importer Programming Guide. |
PreferencePane |
A plug-in for a preference pane bundle that can be used with the System Preferences application or an application’s user preferences. |
Screen Saver |
A plug-in for a screen saver bundle that can be used with the Screen Effects panel in the System Preferences application. |
Sherlock Channel |
A plug-in for a Sherlock Channel that can be used with the Sherlock Internet search application. See Sherlock Channels. |
Sync Schema |
A |
Static Library |
|
A library for which all referenced symbols are bound at link time. |
|
BSD Static Library |
A static library, written in C, that makes use of BSD (see BSD Dynamic Library above) |
Carbon Static Library |
A static library that links against the Carbon framework. |
Cocoa Static Library |
A static library that links against the Cocoa framework. |
The project template names and descriptions should give you a good idea of which project template is right for your product. One way to learn more about a project template is to create a project with that template, examine its contents, and see what happens when you build it. Project templates may change, and new templates are added from time to time with releases of Xcode, but by trying out a template, you can easily examine its default contents in that version of Xcode.
Last updated: 2006-11-07