OLD | NEW |
1 # Checking out and building Chromium on Windows | 1 # Checking out and building Chromium on Windows |
2 | 2 |
3 **See also [the old version of this page](old_linux_build_instructions.md).** | 3 **See also [the old version of this page](old_linux_build_instructions.md).** |
4 | 4 |
5 Google employee? See [go/building-chrome](https://goto.google.com/building-chrom
e) instead. | 5 Google employee? See [go/building-chrome](https://goto.google.com/building-chrom
e) instead. |
6 | 6 |
7 [TOC] | 7 [TOC] |
8 | 8 |
9 ## System requirements | 9 ## System requirements |
10 | 10 |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 * If you see strange errors with the file system on the first run of gclient, | 81 * If you see strange errors with the file system on the first run of gclient, |
82 you may want to [disable Windows Indexing](http://tortoisesvn.tigris.org/faq.h
tml#cantmove2). | 82 you may want to [disable Windows Indexing](http://tortoisesvn.tigris.org/faq.h
tml#cantmove2). |
83 | 83 |
84 After running gclient open a command prompt and type `where python` and | 84 After running gclient open a command prompt and type `where python` and |
85 confirm that the depot_tools `python.bat` comes ahead of any copies of | 85 confirm that the depot_tools `python.bat` comes ahead of any copies of |
86 python.exe. Failing to ensure this can lead to overbuilding when | 86 python.exe. Failing to ensure this can lead to overbuilding when |
87 using gn - see [crbug.com/611087](https://crbug.com/611087). | 87 using gn - see [crbug.com/611087](https://crbug.com/611087). |
88 | 88 |
89 ## Get the code | 89 ## Get the code |
90 | 90 |
91 Create a chromium directory for the checkout and change to it (you can call | 91 Create a `chromium` directory for the checkout and change to it (you can call |
92 this whatever you like and put it wherever you like, as | 92 this whatever you like and put it wherever you like, as |
93 long as the full path has no spaces): | 93 long as the full path has no spaces): |
94 | |
95 $ mkdir chromium | |
96 $ cd chromium | |
97 | 94 |
98 Run the `fetch` tool from depot_tools to check out the code and its | 95 ```shell |
| 96 $ mkdir chromium && cd chromium |
| 97 ``` |
| 98 |
| 99 Run the `fetch` tool from `depot_tools` to check out the code and its |
99 dependencies. | 100 dependencies. |
100 | 101 |
101 $ fetch chromium | 102 ```shell |
| 103 $ fetch ios |
| 104 ``` |
102 | 105 |
103 If you don't want the full repo history, you can save a lot of time by | 106 If you don't want the full repo history, you can save a lot of time by |
104 adding the `--no-history` flag to fetch. Expect the command to take | 107 adding the `--no-history` flag to `fetch`. |
105 30 minutes on even a fast connection, and many hours on slower ones. | |
106 | 108 |
107 When fetch completes, it will have created a directory called `src`. | 109 Expect the command to take 30 minutes on even a fast connection, and many |
108 The remaining instructions assume you are now in that directory: | 110 hours on slower ones. |
109 | 111 |
110 $ cd src | 112 When `fetch` completes, it will have created a hidden `.gclient` file and a |
| 113 directory called `src` in the working directory. The remaining instructions |
| 114 assume you have switched to the `src` directory: |
111 | 115 |
112 ### (optional) Install API keys | 116 ```shell |
| 117 $ cd src |
| 118 ``` |
113 | 119 |
114 You can also [instaldl API keys](https://www.chromium.org/developers/how-tos/api
-keys) | 120 *Optional*: You can also [install API |
115 if you want to talk to some of the Google services, but this is not necessary | 121 keys](https://www.chromium.org/developers/how-tos/api-keys) if you want your |
116 for most development and testing purposes. | 122 build to talk to some Google services, but this is not necessary for most |
| 123 development and testing purposes. |
117 | 124 |
118 ## Seting up the Build | 125 ## Building |
119 | 126 |
120 Chromium uses [Ninja](https://ninja-build.org) as its main build tool, and | 127 Chromium uses [Ninja](https://ninja-build.org) as its main build tool along |
121 a tool called [GN](../tools/gn/docs/quick_start.md) to generate | 128 with a tool called [GN](../tools/gn/docs/quick_start.md) to generate `.ninja` |
122 the .ninja files to do the build. To create a build directory: | 129 files. You can create any number of *build directories* with different |
| 130 configurations. To create a build directory: |
123 | 131 |
124 $ gn gen out/Default | 132 ```shell |
| 133 $ gn gen out/Default |
| 134 ``` |
125 | 135 |
126 * You only have to do run this command once, it will self-update the build | 136 * You only have to run this once for each new build directory, Ninja will |
127 files as needed after that. | 137 update the build files as needed. |
128 * You can replace `out/Default` with another directory name, but we recommend | 138 * You can replace `Default` with another name, but |
129 it should still be a subdirectory of `out`. | 139 it should be a subdirectory of `out`. |
130 * To specify build parameters for GN builds, including release settings, | 140 * For other build arguments, including release settings, see [GN build |
131 see [GN build configuration](https://www.chromium.org/developers/gn-build-conf
iguration). | 141 configuration](https://www.chromium.org/developers/gn-build-configuration). |
132 The default will be a debug component build matching the current host | 142 The default will be a debug component build matching the current host |
133 operating system and CPU. | 143 operating system and CPU. |
134 * For more info on GN, run `gn help` on the command line or read the | 144 * For more info on GN, run `gn help` on the command line or read the |
135 [quick start guide](../tools/gn/docs/quick_start.md). | 145 [quick start guide](../tools/gn/docs/quick_start.md). |
136 | 146 |
137 ### Using the Visual Studio IDE | 147 ### Using the Visual Studio IDE |
138 | 148 |
139 If you want to use the Visual Studio IDE, use the `--ide` command line | 149 If you want to use the Visual Studio IDE, use the `--ide` command line |
140 argument to `gn gen` when you generate your output directory (as described on | 150 argument to `gn gen` when you generate your output directory (as described on |
141 the [get the code](http://dev.chromium.org/developers/how-tos/get-the-code) | 151 the [get the code](http://dev.chromium.org/developers/how-tos/get-the-code) |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 $ git rebase-update | 215 $ git rebase-update |
206 $ gclient sync | 216 $ gclient sync |
207 | 217 |
208 The first command updates the primary Chromium source repository and rebases | 218 The first command updates the primary Chromium source repository and rebases |
209 any of your local branches on top of tip-of-tree (aka the Git branch `origin/mas
ter`). | 219 any of your local branches on top of tip-of-tree (aka the Git branch `origin/mas
ter`). |
210 If you don't want to use this script, you can also just use `git pull` or | 220 If you don't want to use this script, you can also just use `git pull` or |
211 other common Git commands to update the repo. | 221 other common Git commands to update the repo. |
212 | 222 |
213 The second command syncs the subrepositories to the appropriate versions and | 223 The second command syncs the subrepositories to the appropriate versions and |
214 re-runs the hooks as needed. | 224 re-runs the hooks as needed. |
OLD | NEW |