Commit a6b5ead6 authored by Brad King's avatar Brad King

Report missing source files with context of target

Previously we reported only the CMakeLists.txt file in the directory
that adds the target.
parent f3bc219a
......@@ -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;
}
......
......@@ -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);
......
......@@ -1439,8 +1439,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;
}
}
......
......@@ -129,6 +129,9 @@ IF(BUILD_TESTING)
ADD_TEST_MACRO(MathTest MathTest)
ADD_TEST_MACRO(Simple Simple)
ADD_TEST_MACRO(PreOrder PreOrder)
ADD_TEST_MACRO(MissingSourceFile MissingSourceFile)
SET_TESTS_PROPERTIES(MissingSourceFile PROPERTIES
PASS_REGULAR_EXPRESSION "CMake Error at CMakeLists.txt:3 \\(add_executable\\):[ \r\n]*Cannot find source file \"MissingSourceFile.c\"")
ADD_TEST_MACRO(COnly COnly)
ADD_TEST_MACRO(CxxOnly CxxOnly)
ADD_TEST_MACRO(IPO COnly/COnly)
......
cmake_minimum_required(VERSION 2.8)
project(MissingSourceFile C)
add_executable(MissingSourceFile MissingSourceFile.c)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment