Merge topic 'improve-missing-source-file-error'
a6b5ead
Report missing source files with context of target
This commit is contained in:
commit
6580f5de99
|
@ -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->FullPath.empty())
|
||||||
{
|
{
|
||||||
if(this->FindFullPath())
|
if(this->FindFullPath(error))
|
||||||
{
|
{
|
||||||
this->CheckExtension();
|
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 thie method has already failed once do not try again.
|
||||||
if(this->FindFullPathFailed)
|
if(this->FindFullPathFailed)
|
||||||
|
@ -199,7 +199,14 @@ bool cmSourceFile::FindFullPath()
|
||||||
{
|
{
|
||||||
e << " ." << *ext;
|
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;
|
this->FindFullPathFailed = true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,7 @@ public:
|
||||||
* horrible interface, but is necessary for backwards
|
* horrible interface, but is necessary for backwards
|
||||||
* compatibility).
|
* compatibility).
|
||||||
*/
|
*/
|
||||||
std::string const& GetFullPath();
|
std::string const& GetFullPath(std::string* error = 0);
|
||||||
std::string const& GetFullPath() const;
|
std::string const& GetFullPath() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -108,7 +108,7 @@ private:
|
||||||
std::string FullPath;
|
std::string FullPath;
|
||||||
bool FindFullPathFailed;
|
bool FindFullPathFailed;
|
||||||
|
|
||||||
bool FindFullPath();
|
bool FindFullPath(std::string* error);
|
||||||
bool TryFullPath(const char* tryPath, const char* ext);
|
bool TryFullPath(const char* tryPath, const char* ext);
|
||||||
void CheckExtension();
|
void CheckExtension();
|
||||||
void CheckLanguage(std::string const& ext);
|
void CheckLanguage(std::string const& ext);
|
||||||
|
|
|
@ -1428,8 +1428,15 @@ bool cmTarget::FindSourceFiles()
|
||||||
si = this->SourceFiles.begin();
|
si = this->SourceFiles.begin();
|
||||||
si != this->SourceFiles.end(); ++si)
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -129,6 +129,9 @@ IF(BUILD_TESTING)
|
||||||
ADD_TEST_MACRO(MathTest MathTest)
|
ADD_TEST_MACRO(MathTest MathTest)
|
||||||
ADD_TEST_MACRO(Simple Simple)
|
ADD_TEST_MACRO(Simple Simple)
|
||||||
ADD_TEST_MACRO(PreOrder PreOrder)
|
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(COnly COnly)
|
||||||
ADD_TEST_MACRO(CxxOnly CxxOnly)
|
ADD_TEST_MACRO(CxxOnly CxxOnly)
|
||||||
ADD_TEST_MACRO(IPO COnly/COnly)
|
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