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

Reply via email to