• This repository has been archived on 09/Oct/2022
  • Stars
    star
    152
  • Rank 244,685 (Top 5 %)
  • Language SCSS
  • License
    MIT License
  • Created over 4 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A convenient reference of available build settings for Xcode projects.

Warning

This project is no longer maintained. See Apple's Build Settings Reference for a list of supported Xcode settings.


Xcode Build Settings

A convenient reference of available build settings for Xcode projects.

For more information, see this NSHipster article.

Methodology

This website automatically generates its content from information found in Xcode configuration files. If you have Xcode installed locally, you can locate these files by running the following command in the Terminal:

$ find /Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin \
    -iname "*.xcspec" -o \
    -iname "*.strings"
Plug-ins/Clang LLVM 1.0.xcplugin/Contents/Resources/Default Compiler.xcspec
# ...

Detailed Design

Xcode delegates much of its functionality across several plug-ins. Although few details about them are made available publicly, you could make a reasonable guess based on their name and content.

One of the more significant-looking Xcode plugins is one called Xcode3Core.ideplugin, which appears to handle details about the build system. If you look inside, you'll find that this plugin itself comprises several plugins, each named for a familiar technology.

If you peer still deeper into any of these — Metal.xcplugin, for example — you'll find .xcspec and .strings files.

An .xcspec file is a property list containing details about a compiler that's made available to the Xcode build system:

(
	{
		Type = Compiler;
		Identifier = "com.apple.compilers.metal";
		Name = "Metal Compiler";
		Description = "Compiles Metal files";
		CommandLine = "metal -c [options] [inputs]";
		RuleName = "CompileMetalFile [input]";
		ExecDescription = "Compile $(InputFile)";
		ProgressDescription = "Compiling $(CommandProgressByType) Metal files";
		InputFileTypes = (
			"sourcecode.metal",
		);
		Outputs = (
			"$(MTLCOMPILER_OUTPUT_FILE)",
		);
// ...

Also in this list are all the available build settings, including information about what kind of values can be passed and how they map to command-line arguments passed to the compiler:

{
    Name = "MTL_FAST_MATH";
    Type = Bool;
    DefaultValue = YES;
    Category = BuildOptions;
    CommandLineArgs = {
        YES = (
            "-ffast-math",
        );
        NO = (
            "-fno-fast-math",
        );
    };
}

Some .xcspec files have accompanying .strings files containing more human-readable descriptions of the build settings:

<?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>Description</key>
	<string>Metal Compiler</string>
	<key>Name</key>
	<string>Metal Compiler</string>
	<key>Vendor</key>
	<string>Apple</string>
	<key>Version</key>
	<string>Default</string>
	<key>[BuildOptions]-category</key>
	<string>Build Options</string>
	<key>[MTL_COMPILER_FLAGS]-description</key>
    <string>Space-separated list of compiler flags</string>
    <!--- ... -->

This website combines these information sources to provide a single, coherant representation that can be readily searched and consulted.

Contact

Follow NSHipster on Twitter (@NSHipster)

License

All code is published under the MIT License.

All content copyright © Apple Inc. All rights reserved.

NSHipster® and the NSHipster Logo are registered trademarks of Read Evaluate Press, LLC.

Core ML®, Metal®, OpenCL®, Siri®, Swift™, Xcode® and their respective logos are trademarks of Apple Inc.

More Repositories

1

articles

Articles for NSHipster.com
1,209
star
2

ConfettiView

A view that emits confetti 🎉
Swift
544
star
3

nshipster.com

A journal of the overlooked bits in Objective-C, Swift, and Cocoa.
SCSS
281
star
4

PasswordRules

A Swift library for defining strong password generation rules
Swift
278
star
5

clangwarnings.com

A list of Clang warnings and their descriptions.
276
star
6

SwiftSyntaxHighlighter

A syntax highlighter for Swift code that uses SwiftSyntax to generate Pygments-compatible HTML.
Swift
275
star
7

DictionaryKit

An Objective-C Wrapper for Private Dictionary Services on Mac OS X
Objective-C
241
star
8

HypertextLiteral

Generate HTML, XML, and other web content using Swift string literal interpolation
Swift
225
star
9

AVSpeechSynthesizer-Example

A companion project to the NSHipster article about AVSpeechSynthesizer
Swift
160
star
10

articles-zh-Hans

Articles for NSHipster.cn
119
star
11

DynamicDesktop

Companion playgrounds to the NSHipster article about macOS Dynamic Desktops.
Swift
102
star
12

DBSCAN

Density-based spatial clustering of applications with noise
Swift
86
star
13

ibcolortool

List all colors in Storyboards and XIB files
Swift
80
star
14

Image-Resizing-Example

Swift
78
star
15

swift-log-github-actions

GitHub Actions workflow logging for Swift
Swift
72
star
16

swift-gyb

Evaluates and runs a Swift GYB script
Swift
66
star
17

ContactTracing-Framework-Interface

Objective-C header and synthesized Swift interface for Apple & Google's Contact Tracing Framework
Objective-C
58
star
18

xcderiveddata

A command-line utility that prints the path of the derived data directory for the current Xcode project
Shell
55
star
19

uti

A command-line utility that prints the Uniform Type Identifier for files.
Shell
31
star
20

Swift-Documentation-Example

A companion project to the NSHipster article about Swift Documentation
Swift
29
star
21

JavaScriptCore-JSExport-Example

An example of using Swift with JavaScriptCore's JSExport Protocol
Swift
25
star
22

Cycle

A sequence that cycles between each of the items in a given sequence.
Swift
24
star
23

nshipster.cn

NSHipster 关注被忽略的 Objective-C、Swift 和 Cocoa 特性。每周更新。
CSS
23
star
24

MapKitJS-Demo

Swift
22
star
25

homebrew-formulae

Collection of Homebrew Formulae
Ruby
21
star
26

articles-ko

Articles for NSHipster.co.kr
21
star
27

update-homebrew-formula-action

Synchronizes a Homebrew formula with a GitHub release
Ruby
21
star
28

UITableViewHeaderFooterView-Demo

Swift
13
star
29

articles-es

Articles for NSHipster.es
6
star
30

articles-fr

Articles for NSHipster.fr
2
star