瀏覽代碼

-fix VirtualFolders in Eclipse under Windows

Under Windows "locationURI" must be used for virtual folders, while
"location" must be used only for linked folders. Under Linux it doesn't
seem to matter.

Alex
Alex Neundorf 14 年之前
父節點
當前提交
a7d8d49b8f
共有 2 個文件被更改,包括 13 次插入5 次删除
  1. 11 4
      Source/cmExtraEclipseCDT4Generator.cxx
  2. 2 1
      Source/cmExtraEclipseCDT4Generator.h

+ 11 - 4
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"
     ;
 }

+ 2 - 1
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,