Difference between revisions of "C/C Actors"

From Eclipsepedia

Jump to: navigation, search
m (Proposed actors)
 
(4 intermediate revisions by one user not shown)
Line 1: Line 1:
'''Note this document is under construction''' --[[User:Gch.mikrosimage.fr|Gch.mikrosimage.fr]] 12:40, 18 July 2008 (EDT)
+
'''Note this document is under construction''' --[[User:Gch.mikrosimage.fr|Guillaume CHATELET]] 12:40, 18 July 2008 (EDT)
  
 
== Purpose ==
 
== Purpose ==
Line 8: Line 8:
  
 
Component materialization is much harder in non Java environments because :
 
Component materialization is much harder in non Java environments because :
* java projects dependencies are automatically described by the Eclipse plugin framework (no need to create CSpecs)
+
* Java projects dependencies are automatically described by the Eclipse plugin framework (so Buckminster create CSpecs for you)
 
** Contrary to the C/C++ projects for which you have to write them.
 
** Contrary to the C/C++ projects for which you have to write them.
 
* compiling, testing, your code requires to execute programs from outside ( shell scripts, compiler, unit tests and so forth ).
 
* compiling, testing, your code requires to execute programs from outside ( shell scripts, compiler, unit tests and so forth ).
Line 14: Line 14:
 
** which implies you have to download and unzip them : Buckminster cannot do that for the moment despites its exactly what you expect it to do.
 
** which implies you have to download and unzip them : Buckminster cannot do that for the moment despites its exactly what you expect it to do.
  
==== Work flow ====
+
=== Work flow currently used ===
 
The toolchain I created to manage C/C++ projects dependencies is as follows :
 
The toolchain I created to manage C/C++ projects dependencies is as follows :
 
* Create Spec components to describe dependencies
 
* Create Spec components to describe dependencies
Line 22: Line 22:
 
** retrieve libraries from urls or retrieve files from archives pointed by url
 
** retrieve libraries from urls or retrieve files from archives pointed by url
 
** execute commands with specific environment variables (eg. calling the compiler with paths to libraries)
 
** execute commands with specific environment variables (eg. calling the compiler with paths to libraries)
 +
*** those environments variables are retrieved from Buckminster's action's prerequisites section via [[Ant actor API (Buckminster)]]
 
* Create the script to compile the code ( Makefile or Boost Jamfile or SCons file )
 
* Create the script to compile the code ( Makefile or Boost Jamfile or SCons file )
  
 
+
== Proposal ==
== Proposed actors ==
+
  
 
This page is a proposal to extends Buckminster's actor in order to bring users from the non Java world a better experience in executing actions like
 
This page is a proposal to extends Buckminster's actor in order to bring users from the non Java world a better experience in executing actions like

Latest revision as of 06:44, 19 July 2008

Note this document is under construction --Guillaume CHATELET 12:40, 18 July 2008 (EDT)

Contents

[edit] Purpose

While trying to use Buckminster for both my Java and C++ projects, I realized that Java projects within Eclipse were pretty straightforward but C/C++ projects were much more difficult to manage.

[edit] Why is it so hard ?

Component materialization is much harder in non Java environments because :

  • Java projects dependencies are automatically described by the Eclipse plugin framework (so Buckminster create CSpecs for you)
    • Contrary to the C/C++ projects for which you have to write them.
  • compiling, testing, your code requires to execute programs from outside ( shell scripts, compiler, unit tests and so forth ).
  • some of the resources you need to materialize are libraries that are only available as zipped url resources.
    • which implies you have to download and unzip them : Buckminster cannot do that for the moment despites its exactly what you expect it to do.

[edit] Work flow currently used

The toolchain I created to manage C/C++ projects dependencies is as follows :

  • Create Spec components to describe dependencies
  • Specify actions like build / clean / rebuild
    • those actions have prerequisites pointing to other components (eg: the path to the libTiff include folder)
  • Write ant scripts called from buckminster to
    • retrieve libraries from urls or retrieve files from archives pointed by url
    • execute commands with specific environment variables (eg. calling the compiler with paths to libraries)
  • Create the script to compile the code ( Makefile or Boost Jamfile or SCons file )

[edit] Proposal

This page is a proposal to extends Buckminster's actor in order to bring users from the non Java world a better experience in executing actions like

  • downloading resources from the web
  • executing shell scripts