diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index ffbeb4856..b02fc364b 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -574,7 +574,11 @@ void cmLocalGenerator::AddCustomCommandToCreateObject(const char* ofname, std::string flags; flags += this->Makefile->GetSafeDefinition(varString.c_str()); flags += " "; - flags += this->GetIncludeFlags(lang); + { + std::vector includes; + this->GetIncludeDirectories(includes, lang); + flags += this->GetIncludeFlags(includes, lang); + } flags += this->Makefile->GetDefineFlags(); // Construct the command lines. @@ -1192,8 +1196,9 @@ cmLocalGenerator::ConvertToIncludeReference(std::string const& path) } //---------------------------------------------------------------------------- -const char* cmLocalGenerator::GetIncludeFlags(const char* lang, - bool forResponseFile) +const char* cmLocalGenerator::GetIncludeFlags( + const std::vector &includes, + const char* lang, bool forResponseFile) { if(!lang) { @@ -1207,9 +1212,6 @@ const char* cmLocalGenerator::GetIncludeFlags(const char* lang, } cmOStringStream includeFlags; - std::vector includes; - this->GetIncludeDirectories(includes, lang); - std::vector::iterator i; std::string flagVar = "CMAKE_INCLUDE_FLAG_"; flagVar += lang; @@ -1251,6 +1253,7 @@ const char* cmLocalGenerator::GetIncludeFlags(const char* lang, #ifdef __APPLE__ emitted.insert("/System/Library/Frameworks"); #endif + std::vector::const_iterator i; for(i = includes.begin(); i != includes.end(); ++i) { if(this->Makefile->IsOn("APPLE") diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 0c5b9d074..7e737efeb 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -146,8 +146,8 @@ public: ///! Append flags to a string. virtual void AppendFlags(std::string& flags, const char* newFlags); ///! Get the include flags for the current makefile and language - const char* GetIncludeFlags(const char* lang, - bool forResponseFile = false); + const char* GetIncludeFlags(const std::vector &includes, + const char* lang, bool forResponseFile = false); /** * Encode a list of preprocessor definitions for the compiler diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index a3a832bc8..dd982fb57 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -1829,8 +1829,12 @@ void cmMakefileTargetGenerator::AddIncludeFlags(std::string& flags, responseVar += "_USE_RESPONSE_FILE_FOR_INCLUDES"; bool useResponseFile = this->Makefile->IsOn(responseVar.c_str()); + + std::vector includes; + this->LocalGenerator->GetIncludeDirectories(includes, lang); + std::string includeFlags = - this->LocalGenerator->GetIncludeFlags(lang, useResponseFile); + this->LocalGenerator->GetIncludeFlags(includes, lang, useResponseFile); if(includeFlags.empty()) { return; diff --git a/Source/cmake.cxx b/Source/cmake.cxx index cce5080b6..749caf5da 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -605,7 +605,11 @@ bool cmake::FindPackage(const std::vector& args) mf->AddIncludeDirectory(dirIt->c_str(), false); } - std::string includeFlags = lg->GetIncludeFlags(language.c_str(), false); + std::vector includeDirectories; + lg->GetIncludeDirectories(includeDirectories, language.c_str()); + std::string includeFlags = lg->GetIncludeFlags(includeDirectories, + language.c_str(), false); + std::string definitions = mf->GetSafeDefinition("PACKAGE_DEFINITIONS"); printf("%s %s\n", includeFlags.c_str(), definitions.c_str()); }