On Monday 25 April 2011, Oliver Buchtala wrote:
> Am 20.04.2011 22:09, schrieb Alexander Neundorf:
> > ...
> >
> >>> What would you expect there ?
> >>
> >> Some structure that gives me acces to the sources of the targets.
> >> I suppose, you try to achieve this with sub-projects, but it does not
> >> work properly in my case.
> >
> > How does it work not properly ?
> > Don't you have project() calls or are they not created ?
>
> While creating a document on my generator implementation, I stumbled
> over the solution to this problem.
>
> [Subprojects] was empty in my setting because the generated link
> specifications have been invalid.
> Maybe, Eclipse CDT has changed here (?).
>
> You have to use 'locationURI' for virtual folders and 'location' for
> linked folders.
> I.e., specify a linked folder like that (in .cproject-file):
>
> ...
> <linkedResources>
> <link>
> <name>[Subprojects]</name>
> <type>2</type>
> <locationURI>virtual:/virtual</locationURI>
> </link>
> <link>
> <name>[Subprojects]/LIBCURL</name>
> <type>2</type>
> <location>D:/libraries/cmake-git/Utilities/cmcurl</location>
> </link>
> </linkedResources>
> ...
Does the attached patch fix this for you ?
For me (Eclipse Helios under Linux) it doesn't make a difference.
Alex
diff --git a/Source/cmExtraEclipseCDT4Generator.cxx b/Source/cmExtraEclipseCDT4Generator.cxx
index c4ea425..8e26b8e 100644
--- a/Source/cmExtraEclipseCDT4Generator.cxx
+++ b/Source/cmExtraEclipseCDT4Generator.cxx
@@ -403,7 +403,7 @@ void cmExtraEclipseCDT4Generator::CreateProjectFile()
// for each sub project create a linked resource to the source dir
// - only if it is an out-of-source build
this->AppendLinkedResource(fout, "[Subprojects]",
- "virtual:/virtual");
+ "virtual:/virtual", true);
for (std::map<cmStdString, std::vector<cmLocalGenerator*> >::const_iterator
it = this->GlobalGenerator->GetProjectMap().begin();
@@ -1082,17 +1082,24 @@ void cmExtraEclipseCDT4Generator
void cmExtraEclipseCDT4Generator
::AppendLinkedResource (cmGeneratedFileStream& fout,
const std::string& name,
- const std::string& path)
+ const std::string& path,
+ bool isVirtualFolder)
{
+ const char* locationTag = "location";
+ if (isVirtualFolder) // ... and not a linked folder
+ {
+ locationTag = "locationURI";
+ }
+
fout <<
"\t\t<link>\n"
"\t\t\t<name>"
<< cmExtraEclipseCDT4Generator::EscapeForXML(name)
<< "</name>\n"
"\t\t\t<type>2</type>\n"
- "\t\t\t<locationURI>"
+ "\t\t\t<" << locationTag << ">"
<< cmExtraEclipseCDT4Generator::EscapeForXML(path)
- << "</locationURI>\n"
+ << "</" << locationTag << ">\n"
"\t\t</link>\n"
;
}
diff --git a/Source/cmExtraEclipseCDT4Generator.h b/Source/cmExtraEclipseCDT4Generator.h
index 99e69c4..a683731 100644
--- a/Source/cmExtraEclipseCDT4Generator.h
+++ b/Source/cmExtraEclipseCDT4Generator.h
@@ -87,7 +87,8 @@ private:
static void AppendLinkedResource (cmGeneratedFileStream& fout,
const std::string& name,
- const std::string& path);
+ const std::string& path,
+ bool isVirtualFolder = false);
bool AppendOutLinkedResource(cmGeneratedFileStream& fout,
const std::string& defname,
_______________________________________________
cmake-developers mailing list
[email protected]
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers