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 cmake-developers@cmake.org http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers