Ver Fonte

eclipse: Support custom natures via a global property

This is useful for enabling natures not recognized by the Eclipse
generator directly in a project.
Ben Boeckel há 12 anos atrás
pai
commit
a990722b5a

+ 1 - 0
Help/manual/cmake-properties.7.rst

@@ -28,6 +28,7 @@ Properties of Global Scope
    /prop_gbl/PACKAGES_FOUND
    /prop_gbl/PACKAGES_NOT_FOUND
    /prop_gbl/PREDEFINED_TARGETS_FOLDER
+   /prop_gbl/ECLIPSE_EXTRA_NATURES
    /prop_gbl/REPORT_UNDEFINED_PROPERTIES
    /prop_gbl/RULE_LAUNCH_COMPILE
    /prop_gbl/RULE_LAUNCH_CUSTOM

+ 8 - 0
Help/prop_gbl/ECLIPSE_EXTRA_NATURES.rst

@@ -0,0 +1,8 @@
+ECLIPSE_EXTRA_NATURES
+---------------------
+
+List of natures to add to the generated Eclipse project file.
+
+Eclipse projects specify language plugins by using natures. This property
+should be set to the unique identifier for a nature (which looks like a Java
+package name).

+ 12 - 0
Source/cmExtraEclipseCDT4Generator.cxx

@@ -465,6 +465,18 @@ void cmExtraEclipseCDT4Generator::CreateProjectFile()
     fout << "\t\t<nature>" << *nit << "</nature>\n";
     }
 
+  if (const char *extraNaturesProp = mf->GetCMakeInstance()->
+        GetProperty("ECLIPSE_EXTRA_NATURES", cmProperty::GLOBAL))
+    {
+    std::vector<std::string> extraNatures;
+    cmSystemTools::ExpandListArgument(extraNaturesProp, extraNatures);
+    for (std::vector<std::string>::const_iterator nit = extraNatures.begin();
+         nit != extraNatures.end(); ++nit)
+      {
+      fout << "\t\t<nature>" << *nit << "</nature>\n";
+      }
+    }
+
   fout << "\t</natures>\n";
 
   fout << "\t<linkedResources>\n";