Ipphones

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Tuesday, 4 November 2008

Xcode File Templates and a Mystery

Posted on 06:08 by Unknown
One of the things that confuses many newcomers to Xcode is how to set it up so that your company name gets automatically filled in when you create a new file using one of the file templates. The company name value is based on a parameter that is not exposed through the Xcode's preferences or through the System Preferences GUI. The only way that I know of to set this is to execute a single line in the Terminal:

defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions '{ORGANIZATIONNAME = "My Company Name";}'


The mystery here, for me, is that my files are getting created with an organization name, though I've never actually set the organization name on this machine. I do work for several clients, and just never bothered to set it. Only, I noticed today that the value is set. It didn't used to be - I have many source code files to attest to that. Not only that, but it is set to the Organization value that I used on my ADC membership. I find that very odd and have no idea what's going on.

Customizing File Templates


Anyway, since I'm on the topic, did you know that you can also change the file templates to contain whatever information you want? You probably did, but in case you don't know how to go about it, I'll shed a little light on the matter. There are many tutorials floating around the Intertubes on this subject, but you might find it hard to follow some of them. The file template locations have changed a couple of times recently. Most tutorials you find will direct you to templates located here:
/Library/Application Support/Apple/Developer Tools/File Templates

Only, they're not there any more, at least on my install of Leopard. It's possible that they might be there on your system if you didn't do a clean install of Leopard (don't know either way, just saying it's possible), but the default location now is:
/Developer/Library/Xcode/File Templates

But, if you look there, you'll notice a conspicuous absence, which is that there are no iPhone file templates anywhere to be found. The iPhone-specific file templates are located inside the iPhone platform folder:
/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/File Templates

Now, generally, it's a good idea not to mess with the original files. So, if you want to change a file template, you should copy it to ANOTHER location. But it has to be in a location where Xcode will find it. The base location for user templates, which will override any of the templates in the System, Library, or Developer folder, is:
~/Library/Application Support/Apple/Developer Tools/File Templates/

Most of you know that ~ indicates your home folder, but I'm mentioning it on the off chance that somebody doesn't. Anyway, if you want to customize an existing file template, your file must match the directory hierarchy of the file you are replacing. So, for example, if you want to customize the UIView Subclass template, you would copy the folder:
/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/File Templates/Cocoa Touch Classes/UIView subclass.pbfiletemplate/

to the location:
/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/File Templates/Cocoa Touch Classes/UIView subclass.pbfiletemplate/

Once you've done this, you can then then open the template files contained in the UIView subclass.pbfiletemplate folder in a text editor. You can add a copyright statement or license or whatever you need written on every source file you create. Any changes you make will roll into any new files you create using the selected file template, though it won't affect existing files.

The following substitution variables will get be replaced with context- or date- specific information when you create a file using the template:

«DATE»
«DIRECTORY»
«ORGANIZATIONNAME»
«PROJECTNAME»
«PROJECTNAMEASIDENTIFIER»
«TIME»
«USERNAME»
«FULLUSERNAME»
«YEAR»

Those characters you see surrounding the substitution variables are not two greater-than or less-than symbols, those are unicode characters called guillemets (which are used similarly to quotation marks in several languages). If you change the file encoding when you save, or if you change the guillemets to greater-than or less-than symbols, the substitution won't work. Copy and paste is your friend here, but if you need to type them type "«" as Option-Backslash and "»" as Option-Shift-Backslash (Backslash is the one above the return key on most keyboards, not the one that shares a key with the question mark).

Note: Project templates work similarly, but are more complex.
Email ThisBlogThis!Share to XShare to Facebook
Posted in Tip, Xcode | No comments
Newer Post Older Post Home

0 comments:

Post a Comment

Subscribe to: Post Comments (Atom)

Popular Posts

  • Making OpenGL ES Screenshot
    The Bit-101 Blog has an entry that shows how to take a screenshot when using OpenGL ES . I tested this in my much-delayed particle-generato...
  • Adding CLANG to Your Build Process
    Frasier Spiers has a nifty piece this morning on using Git pre-commit hooks to automatically run the CLANG Static Analyzer. I'm not a G...
  • CLANG Static Analyzer
    If you aren't using the LLVM/Clang Static Analyzer , you really should be. The Clang Project is an attempt to write a front end for the...
  • A Little Help
    I'm having a problem with OpenGL ES, and it's keeping me from finishing my particle engine post. I was hoping someone here could see...
  • WWDC Accommodations
    Staying downtown in San Francisco is very expensive in the summertime. Bu, if you're going to WWDC, you really want to stay downtown. Yo...
  • Xcode File Templates and a Mystery
    One of the things that confuses many newcomers to Xcode is how to set it up so that your company name gets automatically filled in when you ...
  • Brain Surgery?
    Craig Hockenberry has an interesting post on his blog today about the iPhone background processing issue. Craig speaks from personal experi...
  • Book's Almost Done
    I just finished Chapter 16. I'll give it another read-over in the morning then it will go off to my writing partner for his review, then...
  • iPhone Alley
    Looks like Dave and I are going to make an appearance on the iPhone Alley Podcast next week. We're recording on Sunday night, so I woul...
  • Shuffling Arrays
    Ever want to randomize an array of items? It's a task that, for some reason, I've had to do a lot in recent programs. So, I wrote a ...

Categories

  • 3D Models
  • Ad Hoc Distribution
  • ADC
  • Address Book
  • Amazon
  • Anaglyphs
  • App Store
  • Apple
  • Apple DTS
  • Apple Store
  • Application Store
  • articles
  • Award
  • Background Processing
  • Barcodes
  • Beta
  • Blog
  • Blogger
  • Blogging
  • Blogs
  • Blogspot
  • Book project
  • Bug Reporting
  • Captain Obvious
  • Categories
  • Censorship
  • CFFoundation
  • CGAffineTransform
  • Clang Static Analyzer
  • Cocoa
  • Cocoa Touch
  • Code Reuse
  • Code Signing
  • Computer
  • conferences
  • Controller Classes
  • Core Animation
  • Daring Fireball
  • Database
  • Debugging
  • Defect
  • Delegates
  • Design Awards
  • Developer Certifications
  • Discussion Forums
  • Edit Mode
  • employment opportunities
  • Encryption
  • Enterprise
  • Errata
  • free code
  • Free software
  • Full Screen
  • Game Programming
  • Gestures
  • Getting Started
  • goof
  • Google Code
  • Google Maps
  • Gotcha
  • Help
  • HIG
  • HTTP PUT
  • Idiots
  • Idle Timer
  • Images
  • Instruments
  • Interface Builder
  • iPHone
  • iPhone Applications
  • iPhone Dev Center
  • iPhone Developers
  • iPhone OS 3.0
  • iPhone SDK
  • iPhone SDK PNG
  • iPhone Simulator
  • iPhoneSDK
  • iPod
  • Job Opportunities.
  • k
  • Key Value Observing
  • Keynote
  • KVO
  • Landscape Mode
  • Learn Cocoa
  • Learn Cocoa on the Mac
  • libxml
  • Licensing
  • Mac Developers
  • Mac OS X
  • Macworld Expo
  • Microsoft
  • NDA
  • NeHe
  • New Category
  • New Release
  • NSFileHandle
  • NSMutableArray
  • NSMutableURLRequest
  • NSXML
  • Object-Oriented Design
  • Objective-C
  • Open Source
  • OpenGL ES
  • Optimizations
  • Other blogs
  • Paired Arrays
  • Parsing
  • Particle Engine
  • Party
  • PeopleSoft
  • Performance
  • Persistence
  • Pink Screen of Death
  • Piracy
  • Pixar
  • Podcasts
  • Press Release WTF
  • Press Releases WTF
  • private APIs Google
  • Project Template
  • Properties
  • Random Numbers
  • Rant
  • Rejected
  • Resources
  • Responder Chain
  • REST
  • Reverse Engineering
  • Rumors
  • Runtime
  • Sample Code
  • Screencast
  • screenshot
  • Scroll Views
  • snippet
  • Snow Leopard.
  • SOAP
  • Sockets
  • Source
  • Splash Screen
  • SQLite
  • SQLitePersistentObjects
  • Steve Jobs
  • Steve-Note
  • Strings
  • Stupidity
  • Subversion
  • Table Views
  • Taps
  • Template
  • Tip
  • Tips
  • Tririga
  • tutorials
  • Twitter
  • UIAlertView
  • UIColor
  • UIImage
  • UIPickerView
  • UIScrollView
  • UITextField
  • UIView
  • UIWebView
  • Update
  • Utilities
  • UUID
  • Vacation
  • Version Control
  • Web Services
  • Writing
  • WTF
  • WWDC
  • Xcode
  • XML

Blog Archive

  • ►  2009 (141)
    • ►  May (14)
    • ►  April (30)
    • ►  March (48)
    • ►  February (26)
    • ►  January (23)
  • ▼  2008 (163)
    • ►  December (46)
    • ▼  November (25)
      • Shameless Post
      • Scratch That
      • A Novel Business Model
      • iPhone Alley
      • Adding Photos to iPhone Library
      • iPhone SDK & OS 2.2 is Out
      • Very Nice
      • "Officially" released
      • Daring Fireball on Google's use of Private APIs
      • Book is Shipping
      • Creating Transparent UIViews - a Rounded Rect View
      • A Note on Code Samples
      • Testing Code Signing
      • More Colors, More Compact
      • If you're in the Bay Area
      • Craig Hockenberry on Debugging again
      • Great Core Animation Project
      • Another Category on NSString
      • Captain Obvious Strikes Back
      • Test Code Formatting Post
      • TouchFighter
      • A Blog about Preventing iPhone App Piracy
      • Changing Application Name
      • Xcode File Templates and a Mystery
      • Interesting Blog
    • ►  October (44)
    • ►  September (2)
    • ►  August (5)
    • ►  July (2)
    • ►  June (9)
    • ►  May (2)
    • ►  April (11)
    • ►  March (17)
Powered by Blogger.

About Me

Unknown
View my complete profile