|
|
@@ -649,6 +649,8 @@ static bool processSources(cmTarget const* tgt,
|
|
|
for (std::vector<cmTargetInternals::TargetPropertyEntry*>::const_iterator
|
|
|
it = entries.begin(), end = entries.end(); it != end; ++it)
|
|
|
{
|
|
|
+ cmLinkImplItem const& item = (*it)->LinkImplItem;
|
|
|
+ std::string const& targetName = item;
|
|
|
std::vector<std::string> entrySources;
|
|
|
cmSystemTools::ExpandListArgument((*it)->ge->Evaluate(mf,
|
|
|
config,
|
|
|
@@ -667,11 +669,10 @@ static bool processSources(cmTarget const* tgt,
|
|
|
i != entrySources.end(); ++i)
|
|
|
{
|
|
|
std::string& src = *i;
|
|
|
-
|
|
|
cmSourceFile* sf = mf->GetOrCreateSource(src);
|
|
|
std::string e;
|
|
|
- src = sf->GetFullPath(&e);
|
|
|
- if(src.empty())
|
|
|
+ std::string fullPath = sf->GetFullPath(&e);
|
|
|
+ if(fullPath.empty())
|
|
|
{
|
|
|
if(!e.empty())
|
|
|
{
|
|
|
@@ -681,6 +682,25 @@ static bool processSources(cmTarget const* tgt,
|
|
|
}
|
|
|
return contextDependent;
|
|
|
}
|
|
|
+
|
|
|
+ if (!targetName.empty() && !cmSystemTools::FileIsFullPath(src.c_str()))
|
|
|
+ {
|
|
|
+ cmOStringStream err;
|
|
|
+ if (!targetName.empty())
|
|
|
+ {
|
|
|
+ err << "Target \"" << targetName << "\" contains relative "
|
|
|
+ "path in its INTERFACE_SOURCES:\n"
|
|
|
+ " \"" << src << "\"";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ err << "Found relative path while evaluating sources of "
|
|
|
+ "\"" << tgt->GetName() << "\":\n \"" << src << "\"\n";
|
|
|
+ }
|
|
|
+ tgt->GetMakefile()->IssueMessage(cmake::FATAL_ERROR, err.str());
|
|
|
+ return contextDependent;
|
|
|
+ }
|
|
|
+ src = fullPath;
|
|
|
}
|
|
|
std::string usedSources;
|
|
|
for(std::vector<std::string>::iterator
|