https://github.com/facebookarchive/xcbuild
Xcode-compatible build tool.
https://github.com/facebookarchive/xcbuild
Last synced: 6 months ago
JSON representation
Xcode-compatible build tool.
- Host: GitHub
- URL: https://github.com/facebookarchive/xcbuild
- Owner: facebookarchive
- License: other
- Archived: true
- Created: 2015-09-23T18:24:01.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2020-01-09T06:28:30.000Z (over 5 years ago)
- Last Synced: 2024-08-24T02:02:00.479Z (9 months ago)
- Language: C++
- Size: 4.25 MB
- Stars: 2,003
- Watchers: 79
- Forks: 190
- Open Issues: 63
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-ios - xcbuild - Xcode-compatible build tool. (Tools / Web View)
README
xcbuild**xcbuild** is an Xcode-compatible build tool with the goal of providing faster builds, better documentation of the build process and running on multiple platforms (macOS, Linux, and Windows)
### Why xcbuild?
Features
Performance
:rocket:Blazing fast incremental buildsxcodebuild
xcbuild + Ninja
:book:Documents the Xcode build process
:link:Builds Xcode projects and workspaces
:hatching_chick:Supports Swift apps and frameworksClean Build30.103s25.122s
:sparkles:Tools and libraries for Xcode projects
:gift_heart:Fully compatible with xcpretty
:tophat:Uses Ninja and llbuildIncremental Build2.190s0.046s :zap:
:octocat:Open source under the BSD license
:penguin:Builds on Linux and Windows### xcbuild and other build tools
[xctool](https://github.com/facebook/xctool) | [Buck](https://github.com/facebook/buck) | [xcpretty](https://github.com/supermarin/xcpretty)
----|----|---
xcbuild and [xctool](https://github.com/facebook/xctool) are both Xcode-compatible build systems. We plan on slowly deprecating xctool's build support but keep it as a great way to run tests. | Facebook's main build system is [Buck](https://buckbuild.com). Buck has a stronger architecture and advanced features like artifact caching while having a much simpler build format. If you have a new project, it's highly recommended. | xcbuild works great with [xcpretty](https://github.com/supermarin/xcpretty). Pipe the output from xcbuild to xcpretty the same way as you would from `xcodebuild`.## Building xcbuild
[](https://travis-ci.org/facebook/xcbuild)
### Requirements
#### All platforms
- [CMake](http://www.cmake.org) and [Ninja](https://ninja-build.org/) (or [llbuild](https://github.com/apple/swift-llbuild)) are required to build xcbuild.
On macOS you can install those tools with [Homebrew](https://brew.sh/): `brew install cmake ninja`.
On Windows you can install those tools with [Chocolatey](https://chocolatey.org): `choco install cmake ninja`.
#### Linux
###### Ubuntu 18.04
`sudo apt install libpng-dev libpng16-16 libxml2-dev pkg-config ninja-build`###### All others
- GCC 4.8 or later. `libpng16-dev`, `zlib1g-dev`, `libxml2-dev`, and `pkg-config` are also required.#### FreeBSD
###### FreeBSD 12.1
`pkg install png-1.6.37 libxml2-2.9.9 pkgconf-1.6.3,1 ninja-1.9.0,2 gmake-4.2.1_3`#### OpenBSD
###### OpenBSD 6.6
`pkg_add png-1.6.37 libxml-2.9.9 pkgconf-1.6.3 ninja-1.9.0 gmake-4.2.1p4`#### macOS
- Xcode 7 or later.#### Windows
- Visual Studio 2015 or later, on Windows. A `zlib` DLL is also required.### Instructions
#### All platforms
```sh
git clone --depth=1 https://github.com/facebook/xcbuild
cd xcbuild
git submodule update --init
```
#### Linux and macOS:```sh
make
```#### FreeBSD and OpenBSD:
```sh
gmake
```Build output will be in the `build` directory. Run xcbuild with `./build/xcbuild`.
You can place xcbuild in your `bin` directory to run it from other locations: `mv build/xcbuild /usr/local/bin/`.
#### Windows (experimental):
```sh
cmake -Bbuild -H. -G "Visual Studio 14 2015" -DZLIB_ROOT=
```Open `build\xcbuild.sln` and build.
## Usage
The command line options are compatible with [xcodebuild](https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/xcodebuild.1.html).
```
xcbuild -workspace Example.xcworkspace -scheme Example
```### Using Ninja (or llbuild)
To switch to the significantly faster [Ninja](https://ninja-build.org/) executor:
```sh
xcbuild -executor ninja [-workspace Example.xcworkspace ...]
```Besides the `-executor ninja` parameters, the options are otherwise identical. The Ninja executor is fastest if it can avoid re-generating the Ninja files if the build configuration and input project files do not change.
## Contributing
xcbuild actively welcomes contributions from the community. If you're interested in contributing, be sure to check out the [contributing guide](https://github.com/facebook/xcbuild/blob/master/CONTRIBUTING.md). It includes some tips for getting started in the codebase, as well as important information about the code of conduct, license, and CLA.
## Thanks
xcbuild is built on build system documentation from the community. In particular, thanks to these people for their writing:
- [Samantha Marshall](http://pewpewthespells.com)
- [Damien Bobillot](http://maxao.free.fr/xcode-plugin-interface/)
- [Michele Titolo](http://michele.io)
- [Laurent Etiemble](http://www.monobjc.net/xcode-project-file-format.html)
- [Apple Developer](https://developer.apple.com/legacy/library/documentation/DeveloperTools/Conceptual/XcodeBuildSystem/Xcode_Build_System.pdf)Third-party licenses are listed in the `LICENSE` document.