summaryrefslogtreecommitdiffstats
path: root/qmake/book/qmake-pch.leaf
diff options
context:
space:
mode:
Diffstat (limited to 'qmake/book/qmake-pch.leaf')
-rw-r--r--qmake/book/qmake-pch.leaf136
1 files changed, 136 insertions, 0 deletions
diff --git a/qmake/book/qmake-pch.leaf b/qmake/book/qmake-pch.leaf
new file mode 100644
index 00000000..60ea1f4f
--- /dev/null
+++ b/qmake/book/qmake-pch.leaf
@@ -0,0 +1,136 @@
+\chapter Using Precompiled Headers
+
+\target About
+\section1 About Precompiled Headers
+\index About Precompiled Headers
+\index Using Precompiled Headers
+\index Precompiled Headers
+\index PCH
+
+Precompiled headers are a performance feature supported by some
+compilers to compile a stable body of code, and store the compiled
+state of the code in a binary file. During subsequent compilations,
+the compiler will load the stored state, and continue compiling the
+specified file. Each subsequent compilation is faster because the
+stable code does not need to be recompiled.
+
+\e qmake supports the use of precompiled headers (PCH) on some
+platforms and build environments, including:
+\list
+\i Windows
+ \list
+ \i nmake
+ \i Dsp projects (VC 6.0)
+ \i Vcproj projects (VC 7.0 \& 7.1)
+ \endlist
+\i Mac OS X
+ \list
+ \i Makefile
+ \i Xcode
+ \i GCC 3.3 and up
+ \endlist
+\i Unix
+ \list
+ \i GCC 3.4 and up
+ \endlist
+\endlist
+
+
+\target ADD_PCH
+\section1 Adding PCH to your project
+
+
+\target PCH_CONTENTS
+\section2 Contents of the precompiled header file
+
+The precompiled header must contain code which is \e stable
+and \e static throughout your project. A typical PCH might look
+like this:
+\section3 stable.h
+
+\code
+ /* Add C includes here */
+
+ #if defined __cplusplus
+ /* Add C++ includes here */
+ #include <stdlib>
+ #include <iostream>
+ #include <vector>
+ #include <qapplication.h> // Qt includes
+ #include <qpushbutton.h>
+ #include <qlabel.h>
+ #include "thirdparty/include/libmain.h"
+ #include "my_stable_class.h"
+ ...
+ #endif
+\endcode
+
+Note that a precompiled header file needs to separate C includes from
+CPP includes, since the precompiled header file for C files may not
+contain C++ code.
+
+
+\target PROJECT_OPTIONS
+\section2 Project options
+
+To make your project use PCH, the only thing you need to change in
+your project settings (.pro), is to include the PRECOMPILED_HEADER option:
+\code
+ PRECOMPILED_HEADER = stable.h
+\endcode
+\e qmake will handle the rest, to ensure the creation and use of the
+precompiled header file. You do not need to include the precompiled
+header file in HEADERS, as qmake will do this if the configuration
+supports PCH.
+
+All platforms that support precompiled headers have the configuration
+option \Bold precompile_header set. Using this option, you may trigger
+conditional blocks in your .pro file, to add settings when using PCH.
+For example:
+\code
+ precompile_header:!isEmpty(PRECOMPILED_HEADER) {
+ DEFINES += USING_PCH
+ }
+
+\endcode
+
+\target EXAMPLE_PROJECT
+\section1 Example project
+
+You can find the following source code in the
+\e{qt/qmake/examples/precompile} directory:
+
+\Bold mydialog.ui
+\quotefile precompile/mydialog.ui
+\skipto <!
+\printuntil </UI>
+
+\Bold stable.h
+\quotefile precompile/stable.h
+\skipto /*
+\printuntil #endif
+
+\Bold myobject.h
+\quotefile precompile/myobject.h
+\skipto #include
+\printuntil }
+
+\Bold myobject.cpp
+\quotefile precompile/myobject.cpp
+\skipto #include
+\printuntil }
+
+\Bold util.cpp
+\quotefile precompile/util.cpp
+\skipto void
+\printuntil }
+
+\Bold main.cpp
+\quotefile precompile/main.cpp
+\skipto #include
+\printuntil }
+
+\Bold precompile.pro
+\quotefile precompile/precompile.pro
+\skipto #
+\printuntil .ui