From cddedaa7d85c1a4ccc3502a6ec56f6e6cdea6f90 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 4 Apr 2006 09:35:22 -0400 Subject: [PATCH] ENH: INCLUDE_DIRECTORIES should have been written to prepend to the include path so that the most local directories are included first. This is a patch from Alex to resolve the problem by allowing users to switch the default using a variable CMAKE_INCLUDE_DIRECTORIES_BEFORE and then still explicitly appending or prepending by using AFTER or BEFORE arguments explicitly. --- Source/cmIncludeDirectoryCommand.cxx | 8 +++++++- Source/cmIncludeDirectoryCommand.h | 9 ++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Source/cmIncludeDirectoryCommand.cxx b/Source/cmIncludeDirectoryCommand.cxx index eb2128897..eb07eb7d2 100644 --- a/Source/cmIncludeDirectoryCommand.cxx +++ b/Source/cmIncludeDirectoryCommand.cxx @@ -26,12 +26,18 @@ bool cmIncludeDirectoryCommand::InitialPass(std::vector const& args std::vector::const_iterator i = args.begin(); - bool before = false; + bool before = this->Makefile->IsOn("CMAKE_INCLUDE_DIRECTORIES_BEFORE"); + if ((*i) == "BEFORE") { before = true; ++i; } + else if ((*i) == "AFTER") + { + before = false; + ++i; + } for(; i != args.end(); ++i) { diff --git a/Source/cmIncludeDirectoryCommand.h b/Source/cmIncludeDirectoryCommand.h index 0249f9f57..a22bc0e13 100644 --- a/Source/cmIncludeDirectoryCommand.h +++ b/Source/cmIncludeDirectoryCommand.h @@ -61,10 +61,13 @@ public: virtual const char* GetFullDocumentation() { return - " INCLUDE_DIRECTORIES([BEFORE] dir1 dir2 ...)\n" + " INCLUDE_DIRECTORIES([AFTER|BEFORE] dir1 dir2 ...)\n" "Add the given directories to those searched by the compiler for " - "include files. If BEFORE is specified, the directories are prepended " - "onto the current list of directories instead of appended."; + "include files. By default the directories are appended onto " + "the current list of directories. This default behavior can be " + "changed by setting CMAKE_INCLUDE_DIRECTORIES_BEFORE to ON. " + "By using BEFORE or AFTER you can select between appending and " + "prepending, independent from the default. "; } cmTypeMacro(cmIncludeDirectoryCommand, cmCommand);