Remove windows_precompiled_headers.md
The entire contents of this file are obsolete. NOTRY=true (markdown-only change) Review-Url: https://codereview.chromium.org/2370053004 Cr-Commit-Position: refs/heads/master@{#421321}
This commit is contained in:
@ -1,68 +0,0 @@
|
||||
# Windows precompiled headers
|
||||
|
||||
Using precompiled headers on Windows can speed builds up by around 25%.
|
||||
|
||||
Precompiled headers are used by default when GYP generates project files for
|
||||
Visual Studio 2010.
|
||||
|
||||
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
|
||||
MSVS 2008, make sure your `~\.gyp\include.gypi` file looks something like this,
|
||||
then run `gclient runhooks` to update the solution files generated by GYP:
|
||||
|
||||
{
|
||||
'variables': {
|
||||
'chromium_win_pch': 1,
|
||||
}
|
||||
}
|
||||
|
||||
Since [r174228](http://src.chromium.org/viewvc/chrome?view=rev&revision=174228),
|
||||
default is using precompiled header for non `Official` build.
|
||||
|
||||
## Discussion
|
||||
|
||||
MSVS 2008 has some limitations in how well it handles precompiled headers.
|
||||
We've run into two issues:
|
||||
|
||||
1. Using precompiled headers can push our official builders over the edge of
|
||||
the world, into the dangerous Kingdom of Oom (out of memory).
|
||||
1. When compilation flags are changed, instead of doing the right thing and
|
||||
rebuilding the precompiled headers and their dependents, MSVS prints a
|
||||
warning instead, saying the precompiled header file was built with
|
||||
different flags than the current file.
|
||||
|
||||
Because of the above, we disabled use of precompiled headers by default, and
|
||||
required the `chromium_win_pch` flag discussed above to be set.
|
||||
|
||||
We may be able to turn use of precompiled headers back on for Debug builds by
|
||||
default, 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.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
Both of these apply to Visual Studio 2008 only.
|
||||
|
||||
### Precompiled header is missing
|
||||
|
||||
**Problem**: You didn't rebuild recently, and you want to build an individual
|
||||
source file (Ctrl+F7). MSVS complains that the precompiled header is missing.
|
||||
|
||||
**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
|
||||
within a filter somewhere like `../../build/precompile.cc` in your project,
|
||||
individually build that file, then individually build the source file you
|
||||
intended to build. The `precompile.cc` file is the generator for the precompiled
|
||||
header file.
|
||||
|
||||
### specified for precompiled header but not for current compile
|
||||
|
||||
**Problem**: MSVS prints out a warning like this (that we treat as an error):
|
||||
`warning C4651: '/D_FOOBAR' specified for precompiled header but not for current
|
||||
compile`
|
||||
|
||||
**Solution**: This means compilation flags have changed from when the
|
||||
precompiled header file was generated. The issue is that MSVS does not handle
|
||||
this correctly. As compilation flags may affect the precompiled header file, it
|
||||
should be rebuilt 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 built that use precompiled headers.
|
Reference in New Issue
Block a user