RE: [ROOT] preprocessing 3rd party headers with CINT

From: Philippe Canal (pcanal@fnal.gov)
Date: Thu Mar 11 2004 - 21:15:05 MET


Hi Justin,

> root [0] #include <boost/format.hpp>

I recommend you actually generate a dictionary for this.
Your first try could be

  root [] .L boost/format.hpp+

However this will not instantiate and expose all the needed templates.
So you may also have create some file looking like (approximative class
name):

// Start of start.C
#include <boost/format.hpp>
#include <myclass.h>
#ifdef __MAKECINT__
#pragma link C++ namespace boost;
#pragma link C++ class boost::smart_ptr<myclass>;
#pragma link C++ class myclass;
#endif
// End of start.C
and do
   root [] .L start.C+

Cheers,
Philippe

-----Original Message-----
From: Justin Findlay [mailto:findlay@cosmic.utah.edu]
Sent: Thursday, March 11, 2004 2:05 PM
To: Philippe Canal
Cc: roottalk@pcroot.cern.ch
Subject: Re: [ROOT] preprocessing 3rd party headers with CINT


On Thu, Mar 11, 2004 at 09:56:06AM -0600, Philippe Canal wrote:
> Hi Justin,
>
> Which problem do you still see __with__ the -p option?
> Can you provide an example?

The problem is that with or without the external preprocessing of
source/header files enabled via '-p', the error message remains the same as
if the '-p' option didn't actually cause CINT's preprocessing to defer to
'g++ -E'.

$ root -p || root
root [0] #include <boost/format.hpp>
Error: G__getvariable: expression  FILE:/usr/include/boost/config.hpp
LINE:23
...
Limitation: can not handle macro BOOST_USER_CONFIG <boost/config/user.hpp>
Use +P or -p option FILE:/usr/include/boost/config.hpp LINE:23

> PS.  Also see Masa's talk at the recent ROOT User's Workshop on the
subject of
> 3rd party libraries.

Thanks, that looks promising.  I shall.


Justin



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:06 MET