Changing the default header comment license in Xcode
Asked Answered
M

15

140

Whenever I create a new .cpp/.h file in Xcode a comment is added to the top of the file. For example:

/*
 *  <file>.cpp
 *  <Name of project>
 *
 *  Created by <My name> on <Date>.
 *  Copyright <Year and company>. All rights reserved.
 *
 */

I want to change the default comment to be another license, like GPL/LGPL/ or something else. Is there somewhere I can change this behavior in Xcode?

Motherwell answered 4/3, 2010 at 17:2 Comment(1)
Possible duplicate of Change templates in XcodeAaronson
I
116

Beginning with Xcode 9, do the following:

  1. Create a property list file named IDETemplateMacros.plist.

  2. Add a FILEHEADER value to the root and set its string value to your copyright text (e.g. Copyright © 2017 ...).

  3. Save the file to one of the following locations:

    • For a single user in a single project <ProjectName>.xcodeproj/xcuserdata/[username].xcuserdatad/IDETemplateMacros.plist

    • For all team members in a single project <ProjectName>.xcodeproj/xcshareddata/IDETemplateMacros.plist

    • For a single user in all projects in a workspace <WorkspaceName>.xcworkspace/xcuserdata/[username].xcuserdatad/IDETemplateMacros.plist

    • For all users in all projects in a workspace <WorkspaceName>.xcworkspace/xcshareddata/IDETemplateMacros.plist

    • For everything you work on ~/Library/Developer/Xcode/UserData/IDETemplateMacros.plist

If you now create a new file in Xcode, you should see the new copyright header.

Here's a sample IDETemplateMacros.plist for copying and pasting:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>FILEHEADER</key>
    <string>
//  Created by Your Name on 29.12.17.
//  Copyright © 2017 Your Company. All rights reserved.
//  </string>
</dict>
</plist>

Note that the closing </string> tag should be on the last line to avoid an additional newline.

Iyre answered 21/9, 2017 at 13:44 Comment(6)
To add dynamic data, see the Text Macros Reference: help.apple.com/xcode/mac/9.0/index.html?localePath=en.lproj#/… For examples, see: oleb.net/blog/2017/07/xcode-9-text-macrosKingsley
Copyright symbol doesn't work when copy-pasting the above example into Vim. Replace it with &#169; to make it work.Rig
An addition note to this if you have subprojects within your project you will have to add the file to each subproject.Whizbang
Do you know if there is a way to have absolutely no header at all? If I use <string></string>, then files still always being with an initial empty comment line like this: //. Thanks!Welter
I came across to this post jasonzurita.com/remove-xcode-file-header-comments but I didn't try.Iyre
Thanks. This is mostly right and very helpful. However, the // is inserted automatically on the first line. So mine -- which is just one line -- reads <string> My Header!</string> for the value line, all on one line.Hickerson
V
87

First try changing your Name and Organization your contact card in Address Book.

If that doesn't work, open System Preferences > Users & Groups > Right click on your user (System Preferences must already be unlocked) > Advanced Options... > Change the name in the Full Name text box.

To change the organization name in Xcode click on the project file so it is selected (left sidebar of Xcode in the Project navigator) > In the File Inspector (right sidebar of Xcode) change the Organization text box.

Organization text box

Venitavenite answered 3/1, 2017 at 17:28 Comment(3)
This one worked perfectly! Should be the accepted answers since it's really simpleMattern
@MarcelGangwisch No of course not. This is only for new files. For existing files, you need to click on the menu Find > Find and Replace in Workspace... and replace the text that way.Venitavenite
This is the perfect one :)Traps
O
33

This blog post has some good steps for modifying file templates in Xcode 4.3:

http://error-success.piku.org.uk/2012/04/27/how-to-make-xcode-4-3-2-templates/

The /Developer folder no longer exists, so you copy the templates from within the Xcode.app bundle located in /Applications:

/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File\ Templates/

And place your modified copy here, as before:

~/Library/Developer/Xcode/Templates/File\ Templates/

UPDATE: I decided to write a script that would extract the built in Xcode templates and replace the headers. Source and instructions can be found at the following url:

https://github.com/royclarkson/xcode-templates

Ovariotomy answered 13/7, 2012 at 18:25 Comment(0)
W
27
/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates

any update of your SDK will wipe changes here so keep your template backed up somewhere else

Wart answered 4/3, 2010 at 17:19 Comment(9)
macresearch.org/custom_xcode_templates Here I found information on how to create new File Templates. (Though it was a bit self-explanatory)Motherwell
this is good if you want to change each individual template, but I think it would be easier to just modify the 'organisation name'. It works across the board for all the templates. For anyone who is interested see my answer below.Belletrist
Ok, this worked. Now does anyone know where templates get their env variables and how do I add one? Examples from template: ___FULLUSERNAME___, ___PROJECTNAME___Overcompensation
The list of available text header macros can be found here help.apple.com/xcode/mac/current/#/dev7fe737ce0Territorialize
So hard to post the full path? it usually is: /Applications/Xcode.app/Contents/Developer/Library/Xcode/TemplatesJocosity
fixed it, it's changed over the years so the answer was out of date :) @JocosityWart
Anything under /Developer might be changed without warning by apple - see answer by mmmmmmSlow
This doesn't seem like a complete answer to meThermolysis
The answer is outdated since I wrote it 10 years ago :) There are more up-to-date answers below but this is the accepted answer because it worked at the timeWart
O
16

Don't edit anything in /Developer as Apple can overwrite this at any time.

The following works for Xcode 4, 5 and 6 except later source differs and is under /Applications

Instead copy the templates that you want to change from /Applications/Xcode<version>.app/Contents/Developer/Library/Xcode/Templates to ~/Library/Developer/Xcode/Templates/File Templates and then edit the files keeping the same directory structure but edit the directory name that is the template to not show up a a duplicate in Xcode.

e.g for a new category of C/C+ files in Xcode 5 copy /Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File Templates/C and C++ to ~/Library/Developer/Xcode/Templates/File Templates/GPL C and C++

this process is copied from Red Glasses's blog

For Xcode 4 the source path is or for Xcode 4 /Developer/Library/Xcode/Templates/File Templates

Or answered 3/12, 2011 at 20:13 Comment(3)
In your third paragraph it should say ~/Library/Developer/Xcode/Templates/File TemplatesShowoff
@Showoff I added an extra sub directory or is there another issue?Or
No, you are missing /Developer from the user path in the third paragraph. ~/Library/Xcode/Templates/File Templates should be ~/Library/Developer/Xcode/Templates/File Templates. I upvoted your answer, it helped me, I just thought I'd comment because I wasted a little time puzzling over why I didn't have a ~/Library/Xcode directory.Showoff
S
12

In Xcode 12.4

Using Xcode, create a plist file named IDETemplateMacros.

Save it to the Desktop initially while you configure it.

If you cannot see the file in the Project Navigator then from the Xcode menu, select View > Navigators > Project

Right click on the filename and select Open as > Source Code

The following is a template that works nicely for me so chances are it will for you too.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>FILEHEADER</key>
        <string>
//
// ___FILENAME___
// ___PACKAGENAME___
//
// Created by ___FULLUSERNAME___ on ___DATE___
// Copyright © ___YEAR___ ___FULLUSERNAME___. All rights reserved.
//
        </string>
    </dict>
</plist>

Copy and paste the above overwriting the existing contents.

Save the file and close it.

In Finder navigate to the following folder:

~/Library/Developer/Xcode/UserdData/

Drag the file from your Desktop to this Folder and then test using Xcode to create a new project.

Subtitle answered 17/4, 2021 at 10:15 Comment(1)
It works for Xcode 13 as well, thanks for the answerPowel
M
10

– Press ⌘ 1 to display the File Navigator.
– Click on the name of your project at the top of the File Navigator.
– Press ⌘⌥⇧ ⏎ (that's Command Option Shift Return) to view the Version Editor.
– Make sure that the Comparison View is shown(View > Version Editor > Show Comparison View).

This lets you see the raw text of your project's project.pbxproj file.

– Press ⌘ f to search the project.pbxproj file, paste in ORGANIZATIONNAME and press Return.

This is where the name of the organization that follows the copyright text is defined.


Or open Xcode's plist at

~/Library/Preferences/com.apple.dt.Xcode.plist

And change the organizationName key's value.


Or select the project from the Navigator pane and display the File Inspector with ⌘⌥ 1.

Look at the Organization value under Project Document. Change the value there.

Marnimarnia answered 20/2, 2019 at 20:59 Comment(0)
B
7

It's very simple:

  1. Open up terminal
  2. In one line, write the following:

    defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions -dict ORGANIZATIONNAME "Blah, Inc"
    

You don't have to worry about changing directories beforehand or anything else. It works instantly.

Belletrist answered 19/2, 2011 at 17:46 Comment(3)
This only changes the organisation and not the license etc.Or
In xCode 6 you can change the ORGANIZATIONNAME for the project from the GUI. Select the project, and select the File Inspector (default position is right side of screen), and you should see the "Organization" file under "Project Document"Romansh
Hmm. In Xcode 10.x, there are interesting results. $ read com.apple.Xcode PBXCustomTemplateMacroDefinitions and you get The domain/default pair of (com.apple.Xcode, PBXCustomTemplateMacroDefinitions) does not exist. And a simple read also causes an error. $ read com.apple.Xcode returns Domain com.apple.Xcode does not exist. Use com.apple.dt.Xcode instead.Marnimarnia
A
6

Works with Xcode 14

Say you want to modify (or get rid of) the Xcode Header comment.

  • First open Xcode, Use File > New File... (⌘N) and choose Property List from the file templates.
  • Name it file IDETemplateMacros.plist
  • On the navigator, select the file as right-click Open as source code. Xcode will show us the property file as text. Property files are really just XML files.
  • Copy paste the following content:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>FILEHEADER</key>
    <string>Created for ___PROJECTNAME___ in ___YEAR___
// Using Swift ___DEFAULTTOOLCHAINSWIFTVERSION___</string>
</dict>
</plist>

On the root dict we have added an entry with key FILEHEADER and a two-lines string as a value:

Created for ___PROJECTNAME___ in ___YEAR___
// Using Swift ___DEFAULTTOOLCHAINSWIFTVERSION___

Save the file IDETemplateMacros.plist on the folder:

~/Library/Developer/Xcode/UserData/

That's it, now when creating a new project called MyProject, the header will be:

//Created for MyProject in 2022
// Using Swift 5.0

Note1. There is a list of macros on https://help.apple.com/xcode/mac/9.0/index.html?localePath=en.lproj#/dev7fe737ce0

Note 2. As an example you can write:

 Created ___DATE___
// ___COPYRIGHT___

Note that there is a leading space but you do not include the // for the comment on the first line.

Note 3. For a more list of options see: https://useyourloaf.com/blog/changing-xcode-header-comment/

Atomism answered 29/6, 2022 at 21:2 Comment(0)
S
3

Change the details in your Address Book - add a company name. It will pick it up from there.

Scarlet answered 13/12, 2011 at 20:8 Comment(1)
This only pick the organization name from Address Book, not the author's name :(Kalagher
A
2

Try modifying this file:

/Developer/Library/Xcode/File\ Templates/C\ and\ C++/Header\ File.pbfiletemplate/header.h
Accelerometer answered 4/3, 2010 at 17:19 Comment(0)
I
0

In Xcode 4.2, they're here:

/Developer/Library/Xcode/Templates/File Templates
Incorporeal answered 25/10, 2011 at 13:28 Comment(0)
U
0

I just changed the template of a SwiftUI file, you have to open Xcode's Contents and look for the template files you want to change. To change the SwiftUI template the path is this:

/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File\ Templates/MultiPlatform/User\ Interface/SwiftUI\ View.xctemplate

You nedd open with sudo

Uptrend answered 14/7, 2021 at 23:35 Comment(0)
S
-1

For AppCode users:

  1. Go to preferences (CMD + ,)
  2. Editor-File and Code Templates
  3. Change Scheme to Project
  4. Modify Files and/or Includes as you need.
  5. add to git .idea/fileTemplates if needed
Samaniego answered 13/4, 2020 at 10:0 Comment(0)
P
-1

You can override the text macros globally, or for an individual workspace or project. You can also decide to keep the macros for a single user or share it with all users.

The full list of locations that Xcode searches, in order of priority:

Project - single user

<ProjectName>.xcodeproj/xcuserdata/[username].xcuserdatad/

Project - shared by all users

<ProjectName>.xcodeproj/xcshareddata/

Workspace - single user

<WorkspaceName>.xcworkspace/xcuserdata/[username].xcuserdatad/

Workspace - shared by all users

<WorkspaceName>.xcworkspace/xcshareddata/

Globally for Xcode

~/Library/Developer/Xcode/UserData/

I don't remember what was the default template but you can make a template in any way you like using textMacros:

//  ___FILENAME___
//  ___PACKAGENAME___
//
//  Created by ___FULLUSERNAME___ on ___DATE___.
//  ___COPYRIGHT___
//

There are some other textMacros if you like more customization, but these are enough for making something like the default one.

You can create the file yourself if no files found at the path

Pintsize answered 10/8, 2022 at 13:45 Comment(4)
This question isn't about text macros. How does this answer the question?Modulate
A path to the header file and a way to change the text. What else do you need? @RobinDaughertyPintsize
The question is "Whenever I create a new .cpp/.h file in Xcode a comment is added to the top of the file. I want to change the default comment". You described how to create a text macro. Is there a step missing?Modulate
Xcode creates the default comments in the header from the files at the pathes which I have provided. Changing them will cause changing in the default header. And thats the point :)Pintsize

© 2022 - 2024 — McMap. All rights reserved.