瀏覽代碼

ENH: Added use of KWSYS_HEADER macro in c and cxx files to include kwsys headers through their configured namespace.

Brad King 22 年之前
父節點
當前提交
d715fba1cb

+ 2 - 1
Source/kwsys/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] =

+ 1 - 4
Source/kwsys/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

+ 5 - 4
Source/kwsys/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
 {

+ 2 - 1
Source/kwsys/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.  */

+ 2 - 1
Source/kwsys/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)
 
 /*
 

+ 2 - 1
Source/kwsys/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)
 
 /*
 

+ 3 - 1
Source/kwsys/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

+ 4 - 3
Source/kwsys/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)

+ 38 - 0
Source/kwsys/kwsysPrivate.h

@@ -0,0 +1,38 @@
+/*=========================================================================
+
+  Program:   KWSys - Kitware System Library
+  Module:    $RCSfile$
+  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