Eclipse: Add property to include additional contents in .cproject file

Similar to ECLIPSE_EXTRA_NATURES which can be used to add a third party
nature to the .project, this property offers the possibility to inject
third party contents into the .cproject.

An example of where this is useful is MCUXpresso. This is an IDE based
on Eclipse. Compiling through CMake generated Eclipse projects works
fine by using a custom toolchain. However, in order to be able to debug
using such a project, an extra storageModule specific to the target
board is needed in the cproject.
This commit is contained in:
Melanie Cappelaere
2018-05-18 10:25:37 +02:00
committed by Brad King
parent e81e024330
commit fd0da95f63
4 changed files with 22 additions and 0 deletions

View File

@@ -40,6 +40,7 @@ Properties of Global Scope
/prop_gbl/JOB_POOLS
/prop_gbl/PREDEFINED_TARGETS_FOLDER
/prop_gbl/ECLIPSE_EXTRA_NATURES
/prop_gbl/ECLIPSE_EXTRA_CPROJECT_CONTENTS
/prop_gbl/REPORT_UNDEFINED_PROPERTIES
/prop_gbl/RULE_LAUNCH_COMPILE
/prop_gbl/RULE_LAUNCH_CUSTOM

View File

@@ -0,0 +1,12 @@
ECLIPSE_EXTRA_CPROJECT_CONTENTS
-------------------------------
Additional contents to be inserted into the generated Eclipse cproject file.
The cproject file defines the CDT specific information. Some third party IDE's
are based on Eclipse with the addition of other information specific to that IDE.
Through this property, it is possible to add this additional contents to
the generated project.
It is expected to contain valid XML.
Also see the :prop_gbl:`ECLIPSE_EXTRA_NATURES` property.

View File

@@ -6,3 +6,5 @@ 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).
Also see the :prop_gbl:`ECLIPSE_EXTRA_CPROJECT_CONTENTS` property.

View File

@@ -1001,6 +1001,13 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
xml.EndElement(); // project
xml.EndElement(); // storageModule
// Append additional cproject contents without applying any XML formatting
if (const char* extraCProjectContents =
mf->GetState()->GetGlobalProperty("ECLIPSE_EXTRA_CPROJECT_CONTENTS")) {
fout << extraCProjectContents;
}
xml.EndElement(); // cproject
}