|
|
@@ -113,7 +113,7 @@ void cmExtraEclipseCDT4Generator::Generate()
|
|
|
this->CreateCProjectFile();
|
|
|
}
|
|
|
|
|
|
-void cmExtraEclipseCDT4Generator::CreateSourceProjectFile() const
|
|
|
+void cmExtraEclipseCDT4Generator::CreateSourceProjectFile()
|
|
|
{
|
|
|
assert(this->HomeDirectory != this->HomeOutputDirectory);
|
|
|
|
|
|
@@ -141,6 +141,16 @@ void cmExtraEclipseCDT4Generator::CreateSourceProjectFile() const
|
|
|
"\t</buildSpec>\n"
|
|
|
"\t<natures>\n"
|
|
|
"\t</natures>\n"
|
|
|
+ "\t<linkedResources>\n";
|
|
|
+
|
|
|
+ if (this->SupportsVirtualFolders)
|
|
|
+ {
|
|
|
+ this->CreateLinksToSubprojects(fout, this->HomeDirectory);
|
|
|
+ this->SrcLinkedResources.clear();
|
|
|
+ }
|
|
|
+
|
|
|
+ fout <<
|
|
|
+ "\t</linkedResources>\n"
|
|
|
"</projectDescription>\n"
|
|
|
;
|
|
|
}
|
|
|
@@ -434,7 +444,7 @@ void cmExtraEclipseCDT4Generator::CreateProjectFile()
|
|
|
|
|
|
if (this->SupportsVirtualFolders)
|
|
|
{
|
|
|
- this->CreateLinksToSubprojects(fout);
|
|
|
+ this->CreateLinksToSubprojects(fout, this->HomeOutputDirectory);
|
|
|
|
|
|
this->CreateLinksForTargets(fout);
|
|
|
}
|
|
|
@@ -541,7 +551,7 @@ void cmExtraEclipseCDT4Generator::CreateLinksForTargets(
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
void cmExtraEclipseCDT4Generator::CreateLinksToSubprojects(
|
|
|
- cmGeneratedFileStream& fout)
|
|
|
+ cmGeneratedFileStream& fout, const std::string& baseDir)
|
|
|
{
|
|
|
// for each sub project create a linked resource to the source dir
|
|
|
// - only if it is an out-of-source build
|
|
|
@@ -557,8 +567,8 @@ void cmExtraEclipseCDT4Generator::CreateLinksToSubprojects(
|
|
|
it->second[0]->GetMakefile()->GetStartDirectory());
|
|
|
// a linked resource must not point to a parent directory of .project or
|
|
|
// .project itself
|
|
|
- if ((this->HomeOutputDirectory != linkSourceDirectory) &&
|
|
|
- !cmSystemTools::IsSubDirectory(this->HomeOutputDirectory.c_str(),
|
|
|
+ if ((baseDir != linkSourceDirectory) &&
|
|
|
+ !cmSystemTools::IsSubDirectory(baseDir.c_str(),
|
|
|
linkSourceDirectory.c_str()))
|
|
|
{
|
|
|
std::string linkName = "[Subprojects]/";
|