diff options
-rw-r--r-- | Source/cmLocalGenerator.cxx | 23 | ||||
-rw-r--r-- | Source/cmLocalGenerator.h | 1 |
2 files changed, 22 insertions, 2 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index d5260a9..b2132f1 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -136,6 +136,7 @@ void cmLocalGenerator::Configure() this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, w.str()); } } + this->ObjectMaxPathViolations.clear(); } this->Configured = true; @@ -2536,8 +2537,26 @@ cmLocalGenerator } #if defined(CM_LG_ENCODE_OBJECT_NAMES) - cmLocalGeneratorCheckObjectName(ssin, dir_max.size(), - this->ObjectPathMax); + if(!cmLocalGeneratorCheckObjectName(ssin, dir_max.size(), + this->ObjectPathMax)) + { + // Warn if this is the first time the path has been seen. + if(this->ObjectMaxPathViolations.insert(dir_max).second) + { + cmOStringStream m; + m << "The object file directory\n" + << " " << dir_max << "\n" + << "has " << dir_max.size() << " characters. " + << "The maximum full path to an object file is " + << this->ObjectPathMax << " characters " + << "(see CMAKE_OBJECT_PATH_MAX). " + << "Object file\n" + << " " << ssin << "\n" + << "cannot be safely placed under this directory. " + << "The build may not work correctly."; + this->Makefile->IssueMessage(cmake::WARNING, m.str()); + } + } #else (void)dir_max; #endif diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 0f4c1e9..5f962ad 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -370,6 +370,7 @@ protected: std::map<cmStdString, cmStdString> LanguageToIncludeFlags; std::map<cmStdString, cmStdString> UniqueObjectNamesMap; std::string::size_type ObjectPathMax; + std::set<cmStdString> ObjectMaxPathViolations; bool WindowsShell; bool WindowsVSIDE; bool WatcomWMake; |