Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Side by Side Diff: docs/windows_build_instructions.md

Issue 2543503004: More fixes to the build instructions. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « docs/mac_build_instructions.md ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Checking out and building Chromium on Windows 1 # Checking out and Building Chromium for Windows
2 2
3 There are instructions for other platforms linked from the
4 [get the code](get_the_code.md) page.
5
3 **See also [the old version of this page](old_linux_build_instructions.md).** 6 **See also [the old version of this page](old_linux_build_instructions.md).**
4 7
5 Google employee? See [go/building-chrome](https://goto.google.com/building-chrom e) instead. 8 ## Instructions for Google Employees
9
10 Are you a Google employee? See
11 [go/building-chrome](https://goto.google.com/building-chrome) instead.
6 12
7 [TOC] 13 [TOC]
8 14
9 ## System requirements 15 ## System requirements
10 16
11 * A 64-bit Intel machine with at least 8GB of RAM. More than 16GB is highly 17 * A 64-bit Intel machine with at least 8GB of RAM. More than 16GB is highly
12 recommended. 18 recommended.
13 * At least 100GB of free disk space. 19 * At least 100GB of free disk space.
14 * Visual Studio 2015 Update 3, see below (no other version is supported). 20 * Visual Studio 2015 Update 3, see below (no other version is supported).
15 * Windows 7 or newer. 21 * Windows 7 or newer.
16 22
17 ## Setting up Windows 23 ## Setting up Windows
18 24
19 ### System locale
20
21 You must set your Windows system locale to English, or else you may get
22 build errors about "The file contains a character that cannot be
23 represented in the current code page."
24
25 ### Visual Studio 25 ### Visual Studio
26 26
27 As of March 11, 2016 Chromium requires Visual Studio 2015 to build. 27 As of March 11, 2016 Chromium requires Visual Studio 2015 to build.
28 28
29 Install Visual Studio 2015 Update 3 or later - Community Edition 29 Install Visual Studio 2015 Update 3 or later - Community Edition
30 should work if its license is appropriate for you. Use the Custom Install option 30 should work if its license is appropriate for you. Use the Custom Install option
31 and select: 31 and select:
32 32
33 - Visual C++, which will select three sub-categories including MFC 33 - Visual C++, which will select three sub-categories including MFC
34 - Universal Windows Apps Development Tools > Tools 34 - Universal Windows Apps Development Tools > Tools
35 - Universal Windows Apps Development Tools > Windows 10 SDK (10.0.10586) 35 - Universal Windows Apps Development Tools > Windows 10 SDK (10.0.10586)
36 36
37 You must have the 10586 SDK installed or else you will hit compile errors such 37 You must have the 10586 SDK installed or else you will hit compile errors such
38 as redefined macros. 38 as redefined macros.
39 39
40 Install Windows Driver Kit (WDK) 10, or use some other method to get the 40 Install the Windows SDK 10, and choose Debugging Tools For Windows when you
41 Debugging Tools for Windows. 41 install this in order to get windbg.
42 42
43 ## Install `depot_tools` 43 ## Install `depot_tools`
44 44
45 Download the (depot_tools bundle)[https://storage.googleapis.com/chrome-infra/de pot_tools.zip] 45 Download the [depot_tools bundle](https://storage.googleapis.com/chrome-infra/de pot_tools.zip)
46 and extract it somewhere. 46 and extract it somewhere.
47 47
48 *** note 48 *** note
49 **Warning:** **DO NOT** use drag-n-drop or copy-n-paste extract from Explorer, 49 **Warning:** **DO NOT** use drag-n-drop or copy-n-paste extract from Explorer,
50 this will not extract the hidden “.git” folder which is necessary for 50 this will not extract the hidden “.git” folder which is necessary for
51 depot_tools to autoupdate itself. You can use “Extract all…” from the 51 depot_tools to autoupdate itself. You can use “Extract all…” from the
52 context menu though. 52 context menu though.
53 *** 53 ***
54 54
55 Add depot_tools to the start of your PATH (must be ahead of any installs of 55 Add depot_tools to the start of your PATH (must be ahead of any installs of
56 Python). Assuming you unzipped the bundle to C:\src\depot_tools: 56 Python). Assuming you unzipped the bundle to C:\src\depot_tools:
57 57
58 With Administrator access: 58 With Administrator access:
59 59
60 Control Panel → System and Security → System → Advanced system settings 60 Control Panel → System and Security → System → Advanced system settings
61 61
62 Modify the PATH system variable to include C:\src\depot_tools. 62 Modify the PATH system variable to include C:\src\depot_tools.
63 63
64 Without Administrator access: 64 Without Administrator access:
65 65
66 Control Panel → User Accounts → User Accounts → Change my environment variables 66 Control Panel → User Accounts → User Accounts → Change my environment variables
67 67
68 Add a PATH user variable: C:\src\depot_tools;%PATH%. 68 Add a PATH user variable (or modify the existing one to include):
69 `C:\src\depot_tools`.
69 70
70 Also, add a DEPOT_TOOLS_WIN_TOOLCHAIN system variable in the same way, and set 71 Also, add a DEPOT_TOOLS_WIN_TOOLCHAIN system variable in the same way, and set
71 it to 0. This tells depot_tools to use your locally installed version of Visual 72 it to 0. This tells depot_tools to use your locally installed version of Visual
72 Studio (by default, depot_tools will try to use a google-internal version). 73 Studio (by default, depot_tools will try to use a google-internal version).
73 74
74 From a cmd.exe shell, run the command gclient (without arguments). On first 75 From a cmd.exe shell, run the command gclient (without arguments). On first
75 run, gclient will install all the Windows-specific bits needed to work with 76 run, gclient will install all the Windows-specific bits needed to work with
76 the code, including msysgit and python. 77 the code, including msysgit and python.
77 78
78 * If you run gclient from a non-cmd shell (e.g., cygwin, PowerShell), 79 * If you run gclient from a non-cmd shell (e.g., cygwin, PowerShell),
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 116
116 ```shell 117 ```shell
117 $ cd src 118 $ cd src
118 ``` 119 ```
119 120
120 *Optional*: You can also [install API 121 *Optional*: You can also [install API
121 keys](https://www.chromium.org/developers/how-tos/api-keys) if you want your 122 keys](https://www.chromium.org/developers/how-tos/api-keys) if you want your
122 build to talk to some Google services, but this is not necessary for most 123 build to talk to some Google services, but this is not necessary for most
123 development and testing purposes. 124 development and testing purposes.
124 125
125 ## Building 126 ## Setting up the build
126 127
127 Chromium uses [Ninja](https://ninja-build.org) as its main build tool along 128 Chromium uses [Ninja](https://ninja-build.org) as its main build tool along
128 with a tool called [GN](../tools/gn/docs/quick_start.md) to generate `.ninja` 129 with a tool called [GN](../tools/gn/docs/quick_start.md) to generate `.ninja`
129 files. You can create any number of *build directories* with different 130 files. You can create any number of *build directories* with different
130 configurations. To create a build directory: 131 configurations. To create a build directory:
131 132
132 ```shell 133 ```shell
133 $ gn gen out/Default 134 $ gn gen out/Default
134 ``` 135 ```
135 136
136 * You only have to run this once for each new build directory, Ninja will 137 * You only have to run this once for each new build directory, Ninja will
137 update the build files as needed. 138 update the build files as needed.
138 * You can replace `Default` with another name, but 139 * You can replace `Default` with another name, but
139 it should be a subdirectory of `out`. 140 it should be a subdirectory of `out`.
140 * For other build arguments, including release settings, see [GN build 141 * For other build arguments, including release settings, see [GN build
141 configuration](https://www.chromium.org/developers/gn-build-configuration). 142 configuration](https://www.chromium.org/developers/gn-build-configuration).
142 The default will be a debug component build matching the current host 143 The default will be a debug component build matching the current host
143 operating system and CPU. 144 operating system and CPU.
144 * For more info on GN, run `gn help` on the command line or read the 145 * For more info on GN, run `gn help` on the command line or read the
145 [quick start guide](../tools/gn/docs/quick_start.md). 146 [quick start guide](../tools/gn/docs/quick_start.md).
146 147
147 ### Using the Visual Studio IDE 148 ### Using the Visual Studio IDE
148 149
149 If you want to use the Visual Studio IDE, use the `--ide` command line 150 If you want to use the Visual Studio IDE, use the `--ide` command line
150 argument to `gn gen` when you generate your output directory (as described on 151 argument to `gn gen` when you generate your output directory (as described on
151 the [get the code](http://dev.chromium.org/developers/how-tos/get-the-code) 152 the [get the code](http://dev.chromium.org/developers/how-tos/get-the-code)
152 page): 153 page):
153 154
154 ```gn gen --ide=vs out\Default 155 ```shell
155 devenv out\Default\all.sln 156 $ gn gen --ide=vs out\Default
157 $ devenv out\Default\all.sln
156 ``` 158 ```
157 159
158 GN will produce a file `all.sln` in your build directory. It will internally 160 GN will produce a file `all.sln` in your build directory. It will internally
159 use Ninja to compile while still allowing most IDE functions to work (there is 161 use Ninja to compile while still allowing most IDE functions to work (there is
160 no native Visual Studio compilation mode). If you manually run "gen" again you 162 no native Visual Studio compilation mode). If you manually run "gen" again you
161 will need to resupply this argument, but normally GN will keep the build and 163 will need to resupply this argument, but normally GN will keep the build and
162 IDE files up to date automatically when you build. 164 IDE files up to date automatically when you build.
163 165
164 The generated solution will contain several thousand projects and will be very 166 The generated solution will contain several thousand projects and will be very
165 slow to load. Use the `--filters` argument to restrict generating project files 167 slow to load. Use the `--filters` argument to restrict generating project files
166 for only the code you're interested in, although this will also limit what 168 for only the code you're interested in, although this will also limit what
167 files appear in the project explorer. A minimal solution that will let you 169 files appear in the project explorer. A minimal solution that will let you
168 compile and run Chrome in the IDE but will not show any source files is: 170 compile and run Chrome in the IDE but will not show any source files is:
169 171
170 ```gn gen --ide=vs --filters=//chrome out\Default``` 172 ```
173 $ gn gen --ide=vs --filters=//chrome out\Default
174 ```
171 175
172 There are other options for controlling how the solution is generated, run `gn 176 There are other options for controlling how the solution is generated, run `gn
173 help gen` for the current documentation. 177 help gen` for the current documentation.
174 178
175 ### Faster builds 179 ### Faster builds
176 180
177 * Reduce file system overhead by excluding build directories from 181 * Reduce file system overhead by excluding build directories from
178 antivirus and indexing software. 182 antivirus and indexing software.
179 * Store the build tree on a fast disk (preferably SSD). 183 * Store the build tree on a fast disk (preferably SSD).
180 184
181 Still, expect build times of 30 minutes to 2 hours when everything has to 185 Still, expect build times of 30 minutes to 2 hours when everything has to
182 be recompiled. 186 be recompiled.
183 187
184 ## Build Chromium 188 ## Build Chromium
185 189
186 Build Chromium (the "chrome" target) with Ninja using the command: 190 Build Chromium (the "chrome" target) with Ninja using the command:
187 191
188 $ ninja -C out\Default chrome 192 ```shell
193 $ ninja -C out\Default chrome
194 ```
189 195
190 You can get a list of all of the other build targets from GN by running 196 You can get a list of all of the other build targets from GN by running
191 `gn ls out/Default` from the command line. To compile one, pass to Ninja 197 `gn ls out/Default` from the command line. To compile one, pass to Ninja
192 the GN label with no preceding "//" (so for `//chrome/test:unit_tests` 198 the GN label with no preceding "//" (so for `//chrome/test:unit_tests`
193 use ninja -C out/Default chrome/test:unit_tests`). 199 use ninja -C out/Default chrome/test:unit_tests`).
194 200
195 ## Run Chromium 201 ## Run Chromium
196 202
197 Once it is built, you can simply run the browser: 203 Once it is built, you can simply run the browser:
198 204
199 $ out\Default\chrome.exe 205 ```shell
206 $ out\Default\chrome.exe
207 ```
208
209 (The ".exe" suffix in the command is actually optional).
200 210
201 ## Running test targets 211 ## Running test targets
202 212
203 You can run the tests in the same way. You can also limit which tests are 213 You can run the tests in the same way. You can also limit which tests are
204 run using the `--gtest_filter` arg, e.g.: 214 run using the `--gtest_filter` arg, e.g.:
205 215
206 $ ninja -C out\Default unit_tests --gtest_filter="PushClientTest.*" 216 ```shell
217 $ out\Default\unit_tests.exe --gtest_filter="PushClientTest.*"
218 ```
207 219
208 You can find out more about GoogleTest at its 220 You can find out more about GoogleTest at its
209 [GitHub page](https://github.com/google/googletest). 221 [GitHub page](https://github.com/google/googletest).
210 222
211 ## Update your checkout 223 ## Update your checkout
212 224
213 To update an existing checkout, you can run 225 To update an existing checkout, you can run
214 226
215 $ git rebase-update 227 ```shell
216 $ gclient sync 228 $ git rebase-update
229 $ gclient sync
230 ```
217 231
218 The first command updates the primary Chromium source repository and rebases 232 The first command updates the primary Chromium source repository and rebases
219 any of your local branches on top of tip-of-tree (aka the Git branch `origin/mas ter`). 233 any of your local branches on top of tip-of-tree (aka the Git branch `origin/mas ter`).
220 If you don't want to use this script, you can also just use `git pull` or 234 If you don't want to use this script, you can also just use `git pull` or
221 other common Git commands to update the repo. 235 other common Git commands to update the repo.
222 236
223 The second command syncs the subrepositories to the appropriate versions and 237 The second command syncs the subrepositories to the appropriate versions and
224 re-runs the hooks as needed. 238 re-runs the hooks as needed.
OLDNEW
« no previous file with comments | « docs/mac_build_instructions.md ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698