diff options
author | Brad King <brad.king@kitware.com> | 2010-09-14 17:31:10 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2010-09-14 17:31:10 (GMT) |
commit | 6580f5de996e99e090ccf9fefa5a2c5d14694478 (patch) | |
tree | 48ca163d80c1f13cf7b39b11a579e54afb375289 /Source | |
parent | ee66f2127167517bcaba326967bbbbcdffa97788 (diff) | |
parent | a6b5ead62fb4e69c053d752570f4c8af24e41857 (diff) | |
download | CMake-6580f5de996e99e090ccf9fefa5a2c5d14694478.zip CMake-6580f5de996e99e090ccf9fefa5a2c5d14694478.tar.gz CMake-6580f5de996e99e090ccf9fefa5a2c5d14694478.tar.bz2 |
Merge topic 'improve-missing-source-file-error'
a6b5ead Report missing source files with context of target
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmSourceFile.cxx | 15 | ||||
-rw-r--r-- | Source/cmSourceFile.h | 4 | ||||
-rw-r--r-- | Source/cmTarget.cxx | 9 |
3 files changed, 21 insertions, 7 deletions
diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx index bc52d7f..b793cd5 100644 --- a/Source/cmSourceFile.cxx +++ b/Source/cmSourceFile.cxx @@ -101,11 +101,11 @@ cmSourceFileLocation const& cmSourceFile::GetLocation() const } //---------------------------------------------------------------------------- -std::string const& cmSourceFile::GetFullPath() +std::string const& cmSourceFile::GetFullPath(std::string* error) { if(this->FullPath.empty()) { - if(this->FindFullPath()) + if(this->FindFullPath(error)) { this->CheckExtension(); } @@ -120,7 +120,7 @@ std::string const& cmSourceFile::GetFullPath() const } //---------------------------------------------------------------------------- -bool cmSourceFile::FindFullPath() +bool cmSourceFile::FindFullPath(std::string* error) { // If thie method has already failed once do not try again. if(this->FindFullPathFailed) @@ -199,7 +199,14 @@ bool cmSourceFile::FindFullPath() { e << " ." << *ext; } - this->Location.GetMakefile()->IssueMessage(cmake::FATAL_ERROR, e.str()); + if(error) + { + *error = e.str(); + } + else + { + this->Location.GetMakefile()->IssueMessage(cmake::FATAL_ERROR, e.str()); + } this->FindFullPathFailed = true; return false; } diff --git a/Source/cmSourceFile.h b/Source/cmSourceFile.h index 937e4b7..2dc8488 100644 --- a/Source/cmSourceFile.h +++ b/Source/cmSourceFile.h @@ -60,7 +60,7 @@ public: * horrible interface, but is necessary for backwards * compatibility). */ - std::string const& GetFullPath(); + std::string const& GetFullPath(std::string* error = 0); std::string const& GetFullPath() const; /** @@ -108,7 +108,7 @@ private: std::string FullPath; bool FindFullPathFailed; - bool FindFullPath(); + bool FindFullPath(std::string* error); bool TryFullPath(const char* tryPath, const char* ext); void CheckExtension(); void CheckLanguage(std::string const& ext); diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 591b0d1..458d1a5 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -1428,8 +1428,15 @@ bool cmTarget::FindSourceFiles() si = this->SourceFiles.begin(); si != this->SourceFiles.end(); ++si) { - if((*si)->GetFullPath().empty()) + std::string e; + if((*si)->GetFullPath(&e).empty()) { + if(!e.empty()) + { + cmake* cm = this->Makefile->GetCMakeInstance(); + cm->IssueMessage(cmake::FATAL_ERROR, e, + this->GetBacktrace()); + } return false; } } |