Jump to: navigation, search

Difference between revisions of "CDT/Developer/FAQ"

< CDT
(Extending CDT)
(Getting the source)
(11 intermediate revisions by 3 users not shown)
Line 8: Line 8:
  
 
== Getting the source ==
 
== Getting the source ==
 
+
CDT has moved from CVS repository to Git. See '[[Getting started with CDT development]]' and '[[CDT/contributing]]'
=== CVS ===
+
* [[EGit/User_Guide]] contains the egit documentation and information on getting started with git.
 
+
* [[Git for Committers]] details using git in the Eclipse development process.  This document describes how to use git to maintain your own development lines and use the tools to generate patches for upstream submission.
Instructions for getting the source through CVS are '[[Getting started with CDT development]]' and '[[CDT/contributing]]'
+
 
+
=== Git ===
+
[[Git for Committers]] details using git in the Eclipse development process.  This document describes how to use git to maintain your own development lines and use the tools to generate patches for upstream submission.
+
 
+
Some of the plugins are available in public git repositories.  These repos track CVS mainline and recent maintenance branches.
+
 
+
If you want a plugin that's not here, contact the [mailto:cdt-dev@eclipse.org  dev-list]
+
 
+
CDT Plugins:
+
* [http://github.com/jamesblackburn/cdt-core CDT Core]
+
* [http://github.com/jamesblackburn/cdt-core-tests CDT Core Tests]
+
* [http://github.com/jamesblackburn/cdt-make-core CDT Make Core]
+
* [http://github.com/jamesblackburn/cdt-managedbuilder-core CDT Managedbuilder Core]
+
* [http://github.com/jamesblackburn/cdt-ui CDT UI]
+
Scripts for creating git repos cloned from CVS:
+
* [http://github.com/jamesblackburn/misc/tree/master/scripts/eclipse-sync Simple Eclipse sync scripts]
+
 
+
+
  
 
== Release Engineering ==
 
== Release Engineering ==
Line 41: Line 22:
 
=== How can I programmatically create a new CDT project? ===  
 
=== How can I programmatically create a new CDT project? ===  
  
Check out methods ResourceHelper.createCDTProject(...) in plugin org.eclipse.cdt.core.tests. The class sports a few flavors of creating CDT project.
+
Check out those:
 +
* ResourceHelper.createCDTProject(...) in plugin org.eclipse.cdt.core.tests
 +
* ManagedBuildTestHelper.createProject(...) in org.eclipse.cdt.managedbuilder.core.tests
 +
* BuildSystemTestHelper.createProject(...) in org.eclipse.cdt.managedbuilder.core.tests
 +
* CProjectDescriptionSerializationTests in org.eclipse.cdt.managedbuilder.core.tests
 +
They sport a few flavors of creating CDT projects.
  
 
=== How do I contribute Include & Library paths to a project configuration? ===
 
=== How do I contribute Include & Library paths to a project configuration? ===
Line 84: Line 70:
  
 
===  Writing to a Console in Eclipse ===
 
===  Writing to a Console in Eclipse ===
[http://www.jevon.org/wiki/Writing_to_a_Console_in_Eclipse see solution based on MessageConsole]
+
[http://www.jevon.org/wiki/Writing_to_a_Console_in_Eclipse See solution based on MessageConsole]
  
 
=== Am I headless? ===
 
=== Am I headless? ===
[http://mea-bloga.blogspot.com/2007/07/am-i-headless.html see solution based on Platform & PlatformUI]
+
[http://aniszczyk.org/2007/07/24/am-i-headless/ See solution based on Platform & PlatformUI]
  
== Question ==
+
== Hints ==
  
 
* Can I find a method declare when my mouse point to a method for the CDT?
 
* Can I find a method declare when my mouse point to a method for the CDT?
 
If you have a method selected in the Editor, pressing F3 will take you to the declaration (i.e. the ''prototype'') and Ctrl-F3 with take you to the definition (i.e. the ''body''). Both options are also available from the Context menu.
 
If you have a method selected in the Editor, pressing F3 will take you to the declaration (i.e. the ''prototype'') and Ctrl-F3 with take you to the definition (i.e. the ''body''). Both options are also available from the Context menu.
 
* Writing to a Console in Eclipse
 
[http://www.jevon.org/wiki/Writing_to_a_Console_in_Eclipse see solution based on MessageConsole]
 
 
* Am I headless?
 
[http://mea-bloga.blogspot.com/2007/07/am-i-headless.html see solution based on Platform & PlatformUI]
 
  
 
* Converting between Reader and Streams
 
* Converting between Reader and Streams
Line 108: Line 88:
 
== More? ==
 
== More? ==
  
Many more questions are answered in the "Working on the CDT" section of the  [http://wiki.eclipse.org/CDT/User/FAQ#Working_on_the_CDT general CDT FAQ].
+
* [http://wiki.eclipse.org/CDT/User/FAQ#Working_on_the_CDT CDT User FAQ] answers many more questions in the section "Working on the CDT".
 
+
* [http://cdt-devel-faq.wikidot.com Andras Varga's CDT Developers FAQ] - unofficial but actually more solid FAQ. 
See also the [http://cdt-devel-faq.wikidot.com unofficial CDT Developers FAQ].
+
* [http://wiki.eclipse.org/index.php/CDT CDT Wiki page] provides assorted collection of links.
  
 
[[Category:CDT]]
 
[[Category:CDT]]
 +
[[Category:FAQ]]

Revision as of 15:39, 18 June 2012

General

  • Is it fun writing code for the CDT?

You betcha! And the Eclipse SDK is such a great environment to work in. We've pumped out quality code by the boat load without a lot of effort.

Getting the source

CDT has moved from CVS repository to Git. See 'Getting started with CDT development' and 'CDT/contributing'

  • EGit/User_Guide contains the egit documentation and information on getting started with git.
  • Git for Committers details using git in the Eclipse development process. This document describes how to use git to maintain your own development lines and use the tools to generate patches for upstream submission.

Release Engineering

  • Where can I get the latest builds?

We have a build machine, cdt.eclipse.org, that we use for our builds. You can access them from the builds section on its home page. You can also generate your own builds by checking out the CDT out of CVS and using the Export -> Deployable Feature menu item provided by the PDE.

Extending CDT

How can I programmatically create a new CDT project?

Check out those:

  • ResourceHelper.createCDTProject(...) in plugin org.eclipse.cdt.core.tests
  • ManagedBuildTestHelper.createProject(...) in org.eclipse.cdt.managedbuilder.core.tests
  • BuildSystemTestHelper.createProject(...) in org.eclipse.cdt.managedbuilder.core.tests
  • CProjectDescriptionSerializationTests in org.eclipse.cdt.managedbuilder.core.tests

They sport a few flavors of creating CDT projects.

How do I contribute Include & Library paths to a project configuration?

  • externalSettingsProvider extension point

The external Settings Provider extension point can be used to register a build settings provider and have it dynamically called back at your own control. You can use this to contribute paths to your build configuration, making decisions at runtime on what should be added.

  1. Use the org.eclipse.cdt.core.externalSettingsProvider extension point, give it an "ID"
  2. Create a 'provider' element pointing at a class that extends CExternalSettingProvider
  3. Register the class on your CDT projects by adding your settingsProvider ID to the configuration descriptions list of settings providers:
    1. externalSettingsProviders = new LinkedHashSet<String>(Arrays.asList(ICConfigurationDescription.getExternalSettingsProviderIds()));
    2. extSettings.add(ID)
    3. ICConfigurationDescription.setExternalSettingsProviderIds(externalSettingsProviders.toArray(new String[0]));
  4. You will get a call-back on:
    1. public CExternalSetting[] getSettings(IProject project, ICConfigurationDescription cfgd) {
  5. which allows you to return appropriate macros and includes for the given configuration desc.
  6. CDT will cache this response, when there is a configuration change which may require a change to your settings, you should call:
    1. cfgd.updateExternalSettingsProviders(new String[] {ID});

Bug 222738 has an attachment with a sample plugin employing this technique. You can download it to get started.

How to add new make targets in the "Make Target" view?

Something like that could do the trick:

  IMakeTargetManager manager = MakeCorePlugin.getDefault().getTargetManager();
  String[] ids = manager.getTargetBuilders(project);
  IMakeTarget target = manager.createTarget(project, "name", ids[0]);
  target.setStopOnError(false);
  target.setRunAllBuilders(false);
  target.setUseDefaultBuildCmd(true);
  target.setBuildAttribute(IMakeCommonBuildInfo.BUILD_COMMAND, "make");
  target.setBuildAttribute(IMakeTarget.BUILD_LOCATION, "/build/location");
  target.setBuildAttribute(IMakeTarget.BUILD_ARGUMENTS, "args");
  target.setBuildAttribute(IMakeTarget.BUILD_TARGET, "target");
  manager.addTarget(container, target);

container here is a subfolder in the project where you wish to place the target.

Writing to a Console in Eclipse

See solution based on MessageConsole

Am I headless?

See solution based on Platform & PlatformUI

Hints

  • Can I find a method declare when my mouse point to a method for the CDT?

If you have a method selected in the Editor, pressing F3 will take you to the declaration (i.e. the prototype) and Ctrl-F3 with take you to the definition (i.e. the body). Both options are also available from the Context menu.

  • Converting between Reader and Streams
BufferedInputStream bis=new BufferedInputStream(url1.openStream());
BufferedReader br=new BufferedReader(new InputStreamReader(url1.openStream()));

More?