Title: Creating Custom Project Types for ProjectBuilder
Entry Number: 2480 Creation Date: October 16, 1996
Last Updated: <<Date June 17, 1997>> Procedure Valid for Release: 4.1
ProjectBuilder uses a set of built-in Project Types such as Application and Framework to describe standard types of projects that have proven useful in quickly developing typical applications of OPENSTEP. While most all development efforts can use combinations of projects instantiated from these project types (and organized hierarchically in a tree structure), it is possible to extend these project types. At launch time, PB reads the following search path, loading in project type definitions:
By loading the site-specific and user-specific project type definitions later, the built-in types can not only be augmented, but overridden. All you need do is place a new .projectType wrapper on this search path and re-launch ProjectBuilder.
To create a new project type definition called MyApplication, create a MyApplication.projectType directory with the following two components:
A "projectTemplate" directory containing the initial contents of projects that are created from this projectType. For example, a standard Info Panel and set of local frameworks could be added to the Application project template so that a new app could be site-specific "right out of the box".
An "Info.table" textual property-list file describing attributes of the Project Type. Valid keys include:
Allowable_SubprojectTypes - A list of names of subprojects which are valid as subprojects of this type of project.
AttributesInspector - The name of the Objective-C class that implements the "Project Attributes" Inspector in PB. Built into PB are: SubprojectInspector, ApplicationInspector, FrameworkInspector, LegacyInspector, PaletteInspector
DefaultExtension - The name a project gets by default (e.g. .bproj, .woa).
GeneratedFiles - The list of files this project derives and maintains itself (e.g. Makefile, iconHeader).
MAKEFILE - The name of the makefile that should be used to build this project (e.g. aggregate.make).
MAKEFILEDIR - The directory containing MAKEFILE (e.g. "$(NEXT_ROOT)/NextDeveloper/Makefiles/project")
Other_Keys - List of other keys (briefcases) in project. These and the other keys below are simply conceptual groupings of briefcases. ProjectBuilder will always display the briefcases grouped in a particular order. Otherwise, all briefcases are basically equal.
Resource_Keys - List of resource keys (briefcases) in project.
Source_Keys - List of source keys (briefcases) in project
Subproj_Keys - List of subproject keys (briefcases) in project.
Targets - The set of build targets these projects support by default in MAKEFILE.
PBProjectTypeSubClass - The name of the Objective-C class in PB that implements the customization functionality for this project type. Built into PB are: PBApplicationProjectType, PBToolProjectType, PBPaletteProjectType
ProvidesIcons - If set to "Yes", hints to PB that icons should be emmited for inclusion in the built binary file.
Public_Keys - The list of keys (briefcases) in which the "Public" attribute can be set.
DisplayName - The actual name that should be used in the PopUpList in PB when creating a new project. If not present, the base name of the .projectType wrapper
AliasNames - Other names this project type was previously known as (e.g. Subproject).
KeyForType - The Makefile key in the parent project this project is recorded under.
Localizable_Keys = The list of keys (briefcases) in which the "Localizable" attribute can be set.
CanCreateInExistingDirectory - If set to"Yes", this project can be created inside an existing directory. Otherwise, PB requires that it create a new directory from scratch for the project.
You can use /NextDeveloper/ProjectTypes/EOF Application.projectType as an example.