# Build Instructions (macOS) Follow the guidelines below for building Electron on macOS. ## Prerequisites * macOS >= 10.11.6 * [Xcode](https://developer.apple.com/technologies/tools/) >= 8.2.1 * [node.js](https://nodejs.org) (external) * Python 2.7 with support for TLS 1.2 ## 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 $ npm run check-tls ``` 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 the following Python modules: * [pyobjc](https://pythonhosted.org/pyobjc/install.html) ## macOS SDK If you're developing Electron and don't plan to redistribute your 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. 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 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 that your Xcode 8.2.1 install is at `/Applications/Xcode.app`, run: ```sh 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/ ``` 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 ## Getting the Code ```sh $ git clone https://github.com/electron/electron ``` ## Bootstrapping The bootstrap script will download all necessary build dependencies and create the build project files. Notice that we're using [ninja](https://ninja-build.org/) to build Electron so there is no Xcode project generated. To bootstrap for a static, non-developer build, run: ```sh $ cd electron $ npm run bootstrap ``` Or to bootstrap for a development session that builds faster by not statically linking: ```sh $ cd electron $ npm run bootstrap:dev ``` 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 ``` ## Building To build both `Release` and `Debug` targets: ```sh $ npm run build ``` You can also build either the `Debug` or `Release` target on its own: ```sh $ npm run build:dev ``` ```sh $ npm run build:release ``` After building is done, you can find `Electron.app` under `out/D`. ## 32bit Support Electron can only be built for a 64bit target on macOS and there is no plan to support 32bit macOS in the future. ## Cleaning To clean the build files: ```sh $ npm run clean ``` To clean only `out` and `dist` directories: ```sh $ npm run clean-build ``` **Note:** Both clean commands require running `bootstrap` again before building. ## Tests See [Build System Overview: Tests](build-system-overview.md#tests)