Difference between revisions of "Eclipse"

From GnuCash
Jump to: navigation, search
m (Getting eclipse to work with gnucash)
m (Installation requirements for schemescript)
Line 15: Line 15:
 
There is much more support available:   
 
There is much more support available:   
 
* plugin for Subversion integration ([http://subclipse.tigris.org/install.html subclipse]). This is very helpful, because differences are highlighted in the editor.
 
* plugin for Subversion integration ([http://subclipse.tigris.org/install.html subclipse]). This is very helpful, because differences are highlighted in the editor.
* Scheme editor plugin: [http://schemeway.sourceforge.net schemeway] (Seems to work only with Eclipse 3.2 yet.)
+
* Scheme editor plugin: [http://schemeway.sourceforge.net schemeway] (You will also have to install "Eclipse Java development tools" and "Eclipse plug-in development environment"  via Help->Software Updates->Available Software->Ganymede.)
  
 
= Edit =
 
= Edit =

Revision as of 23:40, 21 December 2008

Eclipse 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 eclipse 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 Subversion integration (subclipse). This is very helpful, because differences are highlighted in the editor.
  • 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->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->"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.