Eclipse: create links to subprojects also in the source-project (#12579)

Alex
This commit is contained in:
Alex Neundorf 2011-11-19 11:01:03 +01:00
parent 8e1bbee4d9
commit 1110e455c2
2 changed files with 18 additions and 7 deletions

View File

@ -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]/";

View File

@ -46,7 +46,7 @@ public:
private:
// create .project file in the source tree
void CreateSourceProjectFile() const;
void CreateSourceProjectFile();
// create .project file
void CreateProjectFile();
@ -104,7 +104,8 @@ private:
static void AddEnvVar(cmGeneratedFileStream& fout, const char* envVar,
cmMakefile* mf);
void CreateLinksToSubprojects(cmGeneratedFileStream& fout);
void CreateLinksToSubprojects(cmGeneratedFileStream& fout,
const std::string& baseDir);
void CreateLinksForTargets(cmGeneratedFileStream& fout);
std::vector<std::string> SrcLinkedResources;