diff --git a/Base64.c b/Base64.c
index 521109f757e56d19a60cef5d6c21a9594fed8ae3..8eae0a7a780b2a03cef5a24ad08cd63f02e2f021 100644
--- a/Base64.c
+++ b/Base64.c
@@ -15,7 +15,8 @@ PURPOSE.  See the above copyright notices for more information.
 
 =========================================================================*/
 #define KWSYS_IN_BASE64_C
-#include <Base64.h>
+#include "kwsysPrivate.h"
+#include KWSYS_HEADER(Base64.h)
 
 /*--------------------------------------------------------------------------*/
 static const unsigned char kwsysBase64EncodeTable[65] =
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2280839b38e52d88179a0fe9e6429c983b239307..8967bb7ebf323bce7b65463a522238984c004aac 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -304,11 +304,8 @@ IF(KWSYS_LIBRARY_INSTALL_DIR)
 ENDIF(KWSYS_LIBRARY_INSTALL_DIR)
 
 # For building kwsys itself, we use a macro defined on the command
-# line to configure the namespace in the C and C++ source files.  The
-# source files must also include their headers without the namespae
-# prefix, so we add the header directory to the include path directly.
+# line to configure the namespace in the C and C++ source files.
 ADD_DEFINITIONS("-DKWSYS_NAMESPACE=${KWSYS_NAMESPACE}")
-INCLUDE_DIRECTORIES(BEFORE ${KWSYS_HEADER_DIR})
 
 #-----------------------------------------------------------------------------
 # Process execution on windows needs to build a forwarding executable
diff --git a/Directory.cxx b/Directory.cxx
index 8d2d08faba110e8d72ad2ecfa1c60d61a78173b6..d69594068136bef488985796955c4b4b3bc44329 100644
--- a/Directory.cxx
+++ b/Directory.cxx
@@ -14,12 +14,13 @@
      PURPOSE.  See the above copyright notices for more information.
 
 =========================================================================*/
-#include <Directory.hxx>
+#include "kwsysPrivate.h"
+#include KWSYS_HEADER(Directory.hxx)
 
-#include <Configure.hxx>
+#include KWSYS_HEADER(Configure.hxx)
 
-#include <std/string>
-#include <std/vector>
+#include KWSYS_HEADER(std/string)
+#include KWSYS_HEADER(std/vector)
 
 namespace KWSYS_NAMESPACE
 {
diff --git a/EncodeExecutable.c b/EncodeExecutable.c
index fd5979561e4569b94d374d1d89cf34fc2ae4d69b..ef85759a45b2dbdc58a1d26c007b26a4b02134da 100644
--- a/EncodeExecutable.c
+++ b/EncodeExecutable.c
@@ -50,7 +50,8 @@ int main(int argc, char* argv[])
   /* Prepend header comment.  */
   fprintf(ofp, "/*\n * DO NOT EDIT\n * This file is generated by:\n");
   fprintf(ofp, " * %s\n */\n\n", argv[0]);
-  fprintf(ofp, "#include <Configure.h>\n\n");
+  fprintf(ofp, "#include \"kwsysPrivate.h\"\n");
+  fprintf(ofp, "#include KWSYS_HEADER(Configure.h)\n\n");
   fprintf(ofp, "#include <stdio.h>\n\n");
   
   /* Split file up in 1024-byte chunks.  */
diff --git a/ProcessUNIX.c b/ProcessUNIX.c
index b00f64832fa334ae9ea98a06decf6b488b951ed5..678fbecba9bc8fb41d54b3ddd26fc54896ed7aaf 100644
--- a/ProcessUNIX.c
+++ b/ProcessUNIX.c
@@ -15,7 +15,8 @@ PURPOSE.  See the above copyright notices for more information.
 
 =========================================================================*/
 #define KWSYS_IN_PROCESS_C
-#include <Process.h>
+#include "kwsysPrivate.h"
+#include KWSYS_HEADER(Process.h)
 
 /*
 
diff --git a/ProcessWin32.c b/ProcessWin32.c
index 5d5c680a54fb6ab5a5ae21bb8636d008781792a9..8321efeb7d60b71e846a001d1b71515052ae73dd 100644
--- a/ProcessWin32.c
+++ b/ProcessWin32.c
@@ -15,7 +15,8 @@ PURPOSE.  See the above copyright notices for more information.
 
 =========================================================================*/
 #define KWSYS_IN_PROCESS_C
-#include <Process.h>
+#include "kwsysPrivate.h"
+#include KWSYS_HEADER(Process.h)
 
 /*
 
diff --git a/RegularExpression.cxx b/RegularExpression.cxx
index 6c0a626f2d4362621a9f3bc3a6461a03a10bf458..010b38a7da49417987e66b294e761a67ad7d121f 100644
--- a/RegularExpression.cxx
+++ b/RegularExpression.cxx
@@ -33,7 +33,9 @@
 // Updated: DLS 03/22/91  New lite version
 //
 
-#include <RegularExpression.hxx>        // Include class specification 
+#include "kwsysPrivate.h"
+#include KWSYS_HEADER(RegularExpression.hxx)
+
 #include <stdio.h>
 
 namespace KWSYS_NAMESPACE
diff --git a/SystemTools.cxx b/SystemTools.cxx
index 030859da250bacd07c40b45a983d284c545371d5..fb6901f901b144e4993d7d80620bdfb46b6e9e98 100644
--- a/SystemTools.cxx
+++ b/SystemTools.cxx
@@ -14,10 +14,11 @@
      PURPOSE.  See the above copyright notices for more information.
 
 =========================================================================*/
-#include <SystemTools.hxx>
+#include "kwsysPrivate.h"
+#include KWSYS_HEADER(SystemTools.hxx)
 
-#include <std/iostream>
-#include <std/fstream>
+#include KWSYS_HEADER(std/iostream)
+#include KWSYS_HEADER(std/fstream)
 
 #ifdef _MSC_VER
 # pragma warning (disable: 4786)
diff --git a/kwsysPrivate.h b/kwsysPrivate.h
new file mode 100644
index 0000000000000000000000000000000000000000..33598969405277d4ff390c3d1cdf80dcb470c23b
--- /dev/null
+++ b/kwsysPrivate.h
@@ -0,0 +1,38 @@
+/*=========================================================================
+
+  Program:   KWSys - Kitware System Library
+  Module:    kwsysPrivate.h
+  Language:  C++
+  Date:      $Date$
+  Version:   $Revision$
+
+  Copyright (c) 2002 Kitware, Inc., Insight Consortium.  All rights reserved.
+  See http://www.cmake.org/HTML/Copyright.html for details.
+
+     This software is distributed WITHOUT ANY WARRANTY; without even 
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+     PURPOSE.  See the above copyright notices for more information.
+
+=========================================================================*/
+#ifndef KWSYS_NAMESPACE
+# error "Do not include kwsysPrivate.h outside of kwsys c and cxx files."
+#endif
+
+#ifndef _kwsysPrivate_h
+#define _kwsysPrivate_h
+
+/*
+  Define KWSYS_HEADER macro to help the c and cxx files include kwsys
+  headers from the configured namespace directory.  The macro can be
+  used like this:
+  
+  #include KWSYS_HEADER(Directory.hxx)
+  #include KWSYS_HEADER(std/vector)
+*/
+#define KWSYS_HEADER(x) KWSYS_HEADER0(KWSYS_NAMESPACE/x)
+#define KWSYS_HEADER0(x) KWSYS_HEADER1(x)
+#define KWSYS_HEADER1(x) <x>
+
+#else
+# error "kwsysPrivate.h included multiple times."
+#endif