Eclipse

From GnuCash
Revision as of 04:34, 25 January 2014 by Fell (talk | contribs) (From Inside Eclipse: still under development)
Jump to: navigation, search

Eclipse C/C++ Development Tooling (CDT) can be used as a multi-feature editor and debugger for gnucash. Eclipse is a Java IDE but has a C/C++ project which has become quite mature. See www.eclipse.org/cdt/

Getting the Software

An Eclipse Package

From Eclipse.org

If Eclipse is unavailable by the package manager of your distribution have a look at the Eclipses package comparision page and choose that, which covers most of your needs - obvisous it should include C/C+. Then get it from the Eclipse download page.

A new main release is usually every year at the end of june available.

With Synaptic under Ubuntu / Debian

It's 2010/02/24 and the latest stable Ubuntu is 9.10 "Karmic." I believe the Debian procedure may be similar. HOWEVER, the Ubuntu packages may not be in sync with Debian.

There have been some bugs reported that affect the function of the Eclipse windows and buttons. See http://blog.export.be/2009/10/fixing-eclipse-for-ubuntu-karmic-koala-9-10/ and https://bugs.eclipse.org/bugs/show_bug.cgi?id=291257 for some details, and a corresponding Launchpad bug with workaround is here: https://bugs.launchpad.net/ubuntu/+source/eclipse/+bug/458703

This problem with GTK may explain the redraw issues I describe in the steps below...?

Install Eclipse

Open Synaptic Package Manager or Aptitude or whatever and install the Eclipse package. The current version as of these instructions is "Galileo," version 3.5.1.

Required Plugins

Add Plugin and Development Tool Software Sites in Eclipse

Note: In more recent version you can simply search Help->Eclipse Marketplace for your desired plugins.

Note: Replace "Galileo" with with the name of your Eclipse release.

For some reason the Galileo Eclipse package installs with NO default links to the standard software sites. So the Help --> Install New Software panel has NOTHING in it until you add the appropriate URLs.

  • Add the Galileo repository: click Add...
Name: Galileo
Location: http://download.eclipse.org/releases/galileo
  • Add the Schemeway repository: click Add...
Name: Schemeway
Location: http://schemeway.sourceforge.net/update-site
  • Once the software sites are included it's easy to install the C environment and Schemeway.

Install C/C++ if not already part of your package

This is recommend also if you work on the documentation (gnucash-doc) or the website (htdocs), because they all make use of the autotools (configure, make, ...), which can be accessed by this package.

  1. choose Help --> Install New Software
  2. In the Work with menu, choose Galileo. (For some odd reason, nothing shows up in the software list on my system. I found I could put a * or Enter or something in the filter text field and the software list shows up.)
  3. Scroll down to Programming Languages
  4. Choose Eclipse C/C++ Development Tools (Currently this installs version 6.0.0.200909110608)
  5. Click the Next button a few times, maybe answer a licensing question, and then the Finish button. It takes a few minutes to finish.

Suggested Plugins

Install eGit package if you wish to upate your repository from inside Eclipse

Eclipse's Git repository support is provided by the eGit package.

Optional Plugins

Reports etc.: Guile

  • Install Schemeway

Prerequisite:

  • JDT - Eclipse Java Developement Tools
  • PDE - Plugin Developement Environment ====

If not already installed:

  1. Help -> Eclipse Marketplace or in old versions:
    1. Help --> Install New Software
    2. In the Work with menu, choose Galileo or wharever the codename of your release is.
  2. Search JDT and mark it,
  3. Search PDE and mark it,
  4. Click the Next button ...

Continue

  1. (You may already be here) Help --> Install New Software
  2. In the Work With menu, choose Schemeway.
  3. Put an * or Enter or something in the filter text field to make the list show up.
  4. Choose "SchemeWay Feature" (Currently this installs version 1.2.15)
  5. Click the Next button a few times, maybe answer a licensing question, and then the Finish button. It takes a few seconds to finish.

gnc-fq-*, Finance::Quote: Perl

There are several tools available:

  • Eclipse Perl Integration (EPIC)
  • Perl Developement Tools
  • Perlipse

Website htdocs: PHP

Install PHP Developement Tools (PDT)

Documentation, Translation, Account Templates: DocBook/XML

There are several XML editors and tools if you wish to work on the documentation or account chart templates.

E.g.
  • Visual Editor for Xml and
  • Mylyn-Wikitext

should produce Docbook output and are under EPL.

Debugging

Linux Tools has a bunch of useful tools - if you are on Linux.

Bug Triage

In the category Team Synchronizing are inter alia a connector to bugzilla.

Working with Eclipse on GnuCash

With Eclipse >= 3.6 ("Helios") and the CDT >= 7.x installed, using eclipse to develop gnucash is rather easy, but there are several ways possible:

  • use Eclipse only as IDE for editing and debugging and traditional command line tools for the rest
  • install and learn how to
  • use plugins for git or svn
Tip: After you configured them, their commands are in the project explorers context menu in the submenu Team.
  • configure the autotools chain in CDT to work the GnuCash way
If you wish to have a separate build directory disable in Window->Preferences->General->Workspace:Build automatically.
Tips: If you already checked out your project, you can
  • add the autotools property by File->New->Convert to a C/C++ Autotools Project,
  • for htdocs after that Configure->Add PHP Support,
  • If you wish to use a separate build dir, enter it in Properties->C/C++ Build->Builder Settings of your project.

The quick way

  • Get a local working copy of gnucash from SVN, as described on the SVN page, as follows:
git clone https://github.com/Gnucash/gnucash.git gnucash
cd gnucash
  • Open a console and change into the directory of the newly created working copy. As described on Building, call
./autogen.sh
mkdir build        # Create the separate build directory
cd build
./configure
  • If that completed without error, start your Eclipse.
  • Choose File -> New -> Other... -> C++ -> "Makefile Project with Existing Code".
  • Choose some project name for yourself, and
  • choose the newly created working copy directory as "Existing Code Location".
  • Choose the "GNU Autotools Toolchain" as toolchain. Click Finish.

You can now edit the source code and also call "Build Project", and this will work as expected, i.e. it will result in the "gnucash" executable in src/bin.

Tip: After running file changing commands outside of eclipse you should refresh the respective directories in eclipse.

From Inside Eclipse

Notes:

It seems, in contrast to svn egit wish to separate the local repository (default: $HOME/git/<name>) from the workspace (default: $HOME/workspace/<name>) of a repository.
This section is still in developement.
This is not only one way. If your way is shorter or better, feel free to improve this section.
  1. Clone the git project:
    1. Switch to the project explorer view. Eventually you has to open Window->Open perspective->Other...->C/C++
    2. Context menu-> or File->Import...->Projects from Git->Clone URI
      1. URI: https://github.com/Gnucash/gnucash.git for code,
        https://github.com/Gnucash/gnucash-docs documentation or
        https://github.com/Gnucash/gnucash-htdocs website.
        The remaining field will be autofilled or stay empty
      2. Branch Selection: (unchanged)
      3. Local Destination:
        Directory: <your local repository>
        Branch: trunk for svn based repositories, master else
      4. Select a wizard to use for importing projects:
        Import as general project (needs later Convert to C/C++ Autotools Project)
        In theory one could use the new project wizzard too, but that has no autotools option (in Eclipse 4.3)
  2. Add autotools property, 2. or 3. alternative:
    Currently htdocs is no autotools but a makefile project.
    1. Select the Project Explorer
    2. File->New->Convert to a C/C++ Autotools Project
      1. Convert to C/C++ Autotools Project
        Candidates: gnucash*
        Language: C++ for cutecash, C else
      2. Select a Configuration
        (no changes)
      3. Additional Project Settings
        (no changes)
    3. File->New->C/C++->Makefileproject with existing Code
      1. Project Name: (as you like)
        Existing Code Location: (Local Destination from above)
        Languages: C for GnuCash, additional C++ for Cutecash (can be disabled for docs/htdocs)
        Toolchain for indexer Settings: GNU Autotools Toolchain
  3. Only for commiters of gnucash and gnucash-docs until 2014-02-01:
    1. Download [git-update], a shell script to pull changes from github and fixup the branch references for git svn. Put it somewhere on your path, e.g. $HOME/bin.
    2. Edit it so that the path to the git's perl library directory (5th line) is correct for your installation or set $GITPERLLIB in your environment to point to the location of Git.pm or add that path to $PERL5LIB.
    3. Make it executable.

Getting eclipse 3.x to work with gnucash

Precondition: Check out the sources. It might be best to make sure first that gnucash compiles and installs, before starting over with eclipse.

  1. Download Eclipse IDE for C/C++ Developers from [1] and extract to some folder
  2. Start eclipse
  3. Create a new C-Project: File->New -> Empty C-Project:
    1. Location: enter the path to the existing source folder (e.g. C:\soft\gnucash\repos)
    2. deselect "Show project types and toolsets only if they are supported by the platform"
    3. Select Toolchain: "MinGW GCC"
  4. Import include files: This is somehow ugly because you must set each directory you require.
    To browse the .h-includefiles you must enter each folder to the include path:
    • Project ->Properties -> C/C++ Build -> Tab "Tool Settings" -> Directories: add the relevant include paths: e.g. "${workspace_loc:/gnucash/lib/libqof/backend}", ${workspace_loc:/gnucash/src/app-utils} etc. and C:\soft\gnome\include\gtk-2.0 and so on
    See also http://wiki.eclipse.org/CDT/User/FAQ#How_do_I_add_an_external_library_to_my_C.2B.2B_project.3F

There is much more support available:

  • Plugin for Git.
  • Scheme editor plugin: schemeway (You will also have to install "Eclipse Java Development Tools" and "Eclipse Plug-in Development Environment" via Help->Software Updates->Available Software-><eclipse version codename> e.g. Ganymede.)

Edit

Some useful hints for editing:

  • CTRL+Shift+T: Open Element (function, variable, Macro etc)
  • CTRL+Shift+R: Open file
  • F3: open the definition of an element
  • CTRL+Alt+h: open call hierarchy

... and much more...

Build (not to build)

Eclipse won’t be a good help for building. You are always faster if you make_install in a shell window for the directory tree you were editing. To avoid annoying warnings, you should turn off automatic build:

  • Project -> Build automatically
  • Preferences->Run/Debug->Launching->"build (if required) before launching".

Debug

You can use eclipse as a debugging interface. The idea is to attach eclipse to the running gnucash process.

  1. Run->Open Debug Dialog ->"C/C++ Attach to local app" -> New
  2. Select C:\soft\gnucash\inst\bin\gnucash-bin.exe
  3. You must specify the path to your source folder: Path mapping "../../../repos" to "C:\soft\gnucash\repos"
  4. Now start gnucash as usual from inst/bin (ignore warnings about errors in workspace)
  5. Launch your debugging configuration in eclipse
  6. Select the process to attach to (gnucash-bin.exe)
  7. The process will be interrupted. Try if you can browse to gnc_ui_start_event_loop. If not start over with the Source tab (see step 3).
  8. Make sure you have put some breakpoints in and hit Continue
  9. If a breakpoint is encountered you can step through with F6, F5 etc., inspect variables and so on.