electron/docs/development/build-instructions-windows.md

119 lines
3.3 KiB
Markdown
Raw Normal View History

2013-09-09 07:35:57 +00:00
# Build instructions (Windows)
2013-08-14 22:43:35 +00:00
## Prerequisites
* Windows 7 / Server 2008 R2 or higher
2014-11-15 03:21:04 +00:00
* Visual Studio 2013 - [download VS 2013 Community Edition for
free](http://www.visualstudio.com/products/visual-studio-community-vs)
2013-08-14 22:43:35 +00:00
* [Python 2.7](http://www.python.org/download/releases/2.7/)
* 32bit [node.js](http://nodejs.org/download/)
2013-08-14 22:43:35 +00:00
* [git](http://git-scm.com)
2014-11-15 03:21:12 +00:00
If you don't have a Windows installation at the moment,
[modern.ie](https://www.modern.ie/en-us/virtualization-tools#downloads) has
timebombed versions of Windows that you can use to build Atom Shell.
The building of atom-shell is done entirely with command-line scripts, so you
can use any editor you like to develop atom-shell, but it also means you can
not use Visual Studio for the development. Support of building with Visual
Studio will come in the future.
2013-08-14 22:43:35 +00:00
**Note:** Even though Visual Studio is not used for building, it's still
2013-10-26 10:09:22 +00:00
**required** because we need the build toolchains it provided.
2013-08-14 22:43:35 +00:00
## Getting the code
2014-11-15 03:13:40 +00:00
```powershell
git clone https://github.com/atom/atom-shell.git
2013-08-14 22:43:35 +00:00
```
## Bootstrapping
The bootstrap script will download all necessary build dependencies and create
build project files. Notice that we're using `ninja` to build atom-shell so
there is no Visual Studio project generated.
2013-08-14 22:43:35 +00:00
2014-11-15 03:13:40 +00:00
```powershell
cd atom-shell
2014-12-07 15:47:23 +00:00
python script\bootstrap.py -v
2013-08-14 22:43:35 +00:00
```
## Building
Build both Release and Debug targets:
2014-11-15 03:13:40 +00:00
```powershell
2014-12-07 15:47:23 +00:00
python script\build.py
2013-08-14 22:43:35 +00:00
```
You can also only build the Debug target:
2014-11-15 03:13:40 +00:00
```powershell
python script\build.py -c Debug
2013-08-14 22:43:35 +00:00
```
After building is done, you can find `atom.exe` under `out\Debug`.
## 64bit support
Currently atom-shell can only be built for 32bit target on Windows, support for
64bit will come in future.
2013-08-14 22:43:35 +00:00
## Tests
2014-11-15 03:13:40 +00:00
```powershell
python script\test.py
```
## Troubleshooting
### Command xxxx not found
If you encountered an error like `Command xxxx not found`, you may try to use
2014-06-27 03:08:00 +00:00
the `VS2012 Command Prompt` console to execute the build scripts.
### Assertion failed: ((handle))->activecnt >= 0
2014-11-15 03:15:11 +00:00
If building under Cygwin, you may see `bootstrap.py` failed with following
error:
```
Assertion failed: ((handle))->activecnt >= 0, file src\win\pipe.c, line 1430
Traceback (most recent call last):
File "script/bootstrap.py", line 87, in <module>
sys.exit(main())
File "script/bootstrap.py", line 22, in main
update_node_modules('.')
File "script/bootstrap.py", line 56, in update_node_modules
execute([NPM, 'install'])
File "/home/zcbenz/codes/raven/script/lib/util.py", line 118, in execute
raise e
subprocess.CalledProcessError: Command '['npm.cmd', 'install']' returned non-zero exit status 3
```
2014-11-15 03:15:11 +00:00
This is caused by a bug when using Cygwin python and Win32 node together. The
solution is to use the Win32 python to execute the bootstrap script (supposing
you have installed python under `C:\Python27`):
```bash
/cygdrive/c/Python27/python.exe script/bootstrap.py
```
### LNK1181: cannot open input file 'kernel32.lib'
Try reinstalling 32bit node.js.
### Error: ENOENT, stat 'C:\Users\USERNAME\AppData\Roaming\npm'
Simply making that directory [should fix the problem](http://stackoverflow.com/a/25095327/102704):
2014-11-15 03:13:40 +00:00
```powershell
mkdir ~\AppData\Roaming\npm
```
### node-gyp is not recognized as an internal or external command
You may get this error if you are using Git Bash for building, you should use
PowerShell or VS2012 Command Prompt instead.