2016-06-18 13:26:26 +00:00
# Build Instructions (macOS)
2015-08-31 05:30:23 +00:00
2016-06-18 13:26:26 +00:00
Follow the guidelines below for building Electron on macOS.
2013-09-09 07:35:57 +00:00
2013-08-14 22:43:35 +00:00
## Prerequisites
2017-01-24 18:49:42 +00:00
* macOS >= 10.11.6
* [Xcode ](https://developer.apple.com/technologies/tools/ ) >= 8.2.1
2018-01-12 15:24:48 +00:00
* [node.js ](https://nodejs.org ) (external)
2018-05-16 21:19:49 +00:00
* Python 2.7 with support for TLS 1.2
2013-08-14 22:43:35 +00:00
2018-05-16 21:19:49 +00:00
## Python
Please also ensure that your system and Python version support at least TLS 1.2.
This depends on both your version of macOS and Python. For a quick test, run:
```sh
2018-08-12 21:01:46 +00:00
$ npm run check-tls
2018-05-16 21:19:49 +00:00
```
If the script returns that your configuration is using an outdated security
protocol, you can either update macOS to High Sierra or install a new version
of Python 2.7.x. To upgrade Python, use [Homebrew ](https://brew.sh/ ):
```sh
$ brew install python@2 & & brew link python@2 --force
```
If you are using Python as provided by Homebrew, you also need to install
2016-10-11 14:41:28 +00:00
the following Python modules:
2013-11-26 03:46:45 +00:00
2016-10-11 14:34:35 +00:00
* [pyobjc ](https://pythonhosted.org/pyobjc/install.html )
2013-11-26 03:46:45 +00:00
2017-01-20 05:19:07 +00:00
## macOS SDK
2018-05-08 05:16:09 +00:00
If you're developing Electron and don't plan to redistribute your
2017-01-20 05:19:07 +00:00
custom Electron build, you may skip this section.
For certain features (e.g. pinch-zoom) to work properly, you must target the
macOS 10.10 SDK.
2017-01-24 18:49:42 +00:00
Official Electron builds are built with [Xcode 8.2.1 ](http://adcdownload.apple.com/Developer_Tools/Xcode_8.2.1/Xcode_8.2.1.xip ), which does not contain
2017-01-20 05:19:07 +00:00
the 10.10 SDK by default. To obtain it, first download and mount the
[Xcode 6.4 ](http://developer.apple.com/devcenter/download.action?path=/Developer_Tools/Xcode_6.4/Xcode_6.4.dmg )
DMG.
Then, assuming that the Xcode 6.4 DMG has been mounted at `/Volumes/Xcode` and
2017-01-24 18:49:42 +00:00
that your Xcode 8.2.1 install is at `/Applications/Xcode.app` , run:
2017-01-20 05:19:07 +00:00
2017-11-24 10:13:57 +00:00
```sh
2017-01-24 18:49:42 +00:00
cp -r /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
2017-01-20 05:19:07 +00:00
```
2017-01-24 18:49:42 +00:00
You will also need to enable Xcode to build against the 10.10 SDK:
- Open `/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist`
- Set the `MinimumSDKVersion` to `10.10`
- Save the file
2015-08-31 05:30:23 +00:00
## Getting the Code
2013-08-14 22:43:35 +00:00
2017-11-24 10:13:57 +00:00
```sh
2016-10-06 04:31:51 +00:00
$ git clone https://github.com/electron/electron
2013-08-14 22:43:35 +00:00
```
## Bootstrapping
2013-08-29 14:37:51 +00:00
The bootstrap script will download all necessary build dependencies and create
2016-04-22 13:53:26 +00:00
the build project files. Notice that we're using [ninja ](https://ninja-build.org/ )
to build Electron so there is no Xcode project generated.
2013-08-14 22:43:35 +00:00
2018-08-12 21:01:46 +00:00
To bootstrap for a static, non-developer build, run:
2017-11-24 10:13:57 +00:00
```sh
2015-04-16 03:31:12 +00:00
$ cd electron
2018-08-12 21:01:46 +00:00
$ npm run bootstrap
```
Or to bootstrap for a development session that builds faster by not statically linking:
```sh
$ cd electron
$ npm run bootstrap:dev
2013-08-14 22:43:35 +00:00
```
2018-04-09 05:54:14 +00:00
If you are using editor supports [JSON compilation database ](http://clang.llvm.org/docs/JSONCompilationDatabase.html ) based
language server, you can generate it:
```sh
$ ./script/build.py --compdb
```
2013-08-14 22:43:35 +00:00
## Building
2018-08-12 21:01:46 +00:00
To build both `Release` and `Debug` targets:
2013-08-14 22:43:35 +00:00
2017-11-24 10:13:57 +00:00
```sh
2018-08-12 21:01:46 +00:00
$ npm run build
2013-08-14 22:43:35 +00:00
```
2018-08-12 21:01:46 +00:00
You can also build either the `Debug` or `Release` target on its own:
```sh
$ npm run build:dev
```
2013-08-14 22:43:35 +00:00
2017-11-24 10:13:57 +00:00
```sh
2018-08-12 21:01:46 +00:00
$ npm run build:release
2013-08-14 22:43:35 +00:00
```
2015-04-16 03:31:12 +00:00
After building is done, you can find `Electron.app` under `out/D` .
2013-08-14 22:43:35 +00:00
2015-08-31 05:30:23 +00:00
## 32bit Support
2014-05-05 01:48:44 +00:00
2016-06-18 13:26:26 +00:00
Electron can only be built for a 64bit target on macOS and there is no plan to
2016-08-18 15:19:06 +00:00
support 32bit macOS in the future.
2014-05-05 01:48:44 +00:00
2016-09-21 18:10:52 +00:00
## Cleaning
To clean the build files:
2017-11-24 10:13:57 +00:00
```sh
2016-09-21 18:10:52 +00:00
$ npm run clean
```
2017-03-17 18:47:20 +00:00
To clean only `out` and `dist` directories:
2017-03-17 18:44:18 +00:00
2017-11-24 10:13:57 +00:00
```sh
2017-03-17 18:44:18 +00:00
$ npm run clean-build
```
2017-03-20 17:32:16 +00:00
**Note:** Both clean commands require running `bootstrap` again before building.
2017-03-17 18:44:18 +00:00
2013-08-14 22:43:35 +00:00
## Tests
2016-10-06 17:25:33 +00:00
See [Build System Overview: Tests ](build-system-overview.md#tests )