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

Side by Side Diff: docs/windows_precompiled_headers.md

Issue 1309473002: WIP: Migrate Wiki content over to src/docs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months 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/windows_incremental_linking.md ('k') | docs/windows_split_dll.md » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # Introduction
2
3 Using precompiled headers on Windows can speed builds up by around 25%.
4
5 Precompiled headers are used by default when GYP generates project files for Vis ual Studio 2010.
6
7 When using Visual Studio 2008, use of precompiled headers is off by default (see discussion below). To turn on precompiled headers in your client when using MS VS 2008, make sure your `~\.gyp\include.gypi` file looks something like this, th en run `gclient runhooks` to update the solution files generated by GYP:
8
9 ```
10 {
11 'variables': {
12 'chromium_win_pch': 1,
13 }
14 }
15 ```
16
17 Since [r174228](http://src.chromium.org/viewvc/chrome?view=rev&revision=174228), default is using precompiled header for non `Official` build.
18
19 # Discussion
20
21 MSVS 2008 has some limitations in how well it handles precompiled headers. We'v e run into two issues:
22 1. Using precompiled headers can push our official builders over the edge of t he world, into the dangerous Kingdom of Oom (out of memory).
23 1. When compilation flags are changed, instead of doing the right thing and re building the precompiled headers and their dependents, MSVS prints a warning ins tead, saying the precompiled header file was built with different flags than the current file.
24
25 Because of the above, we disabled use of precompiled headers by default, and req uired the `chromium_win_pch` flag discussed above to be set.
26
27 We may be able to turn use of precompiled headers back on for Debug builds by de fault, by adding a workaround to MSVS's limitations to GYP, i.e. if it detects a change in compile flags it could blow away MSVS's output directory.
28
29 # Troubleshooting
30
31 Both of these apply to Visual Studio 2008 only.
32
33
34 ---
35
36
37 **Problem**: You didn't rebuild recently, and you want to build an individual so urce file (Ctrl+F7). MSVS complains that the precompiled header is missing.
38
39 **Solution**: You could do a full build of the target your source file is in. If you'd like to avoid that, find the precompiled header generator file, located w ithin a filter somewhere like `../../build/precompile.cc` in your project, indiv idually build that file, then individually build the source file you intended to build. The `precompile.cc` file is the generator for the precompiled header fil e.
40
41
42 ---
43
44
45 **Problem**: MSVS prints out a warning like this (that we treat as an error): `w arning C4651: '/D_FOOBAR' specified for precompiled header but not for current c ompile`
46
47 **Solution**: This means compilation flags have changed from when the precompile d header file was generated. The issue is that MSVS does not handle this correct ly. As compilation flags may affect the precompiled header file, it should be re built along with its dependents. The workaround for now is to do a full rebuild, or (if you want to try to be minimal) a rebuild of all projects previously buil t that use precompiled headers.
48
49
50 ---
OLDNEW
« no previous file with comments | « docs/windows_incremental_linking.md ('k') | docs/windows_split_dll.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698