Report missing source files with context of target
Previously we reported only the CMakeLists.txt file in the directory that adds the target.
This commit is contained in:
parent
f3bc219adb
commit
a6b5ead62f
|
@ -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)
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
cmake_minimum_required(VERSION 2.8)
|
||||
project(MissingSourceFile C)
|
||||
add_executable(MissingSourceFile MissingSourceFile.c)
|
Loading…
Reference in New Issue