[Phylobase-devl] [Fwd: phylobase]

Dirk Eddelbuettel edd at debian.org
Thu Dec 10 16:10:30 CET 2009

On 10 December 2009 at 08:37, Ben Bolker wrote:
|   The C++ interfacing is a fairly regular irritation for us, it would be
| great to improve it/clean it up -- I'm cc'ing/forwarding this question
| to the rest of the dev team, some of whom may have more informed
| opinions (Brian?)

I'd be glad to help -- Rcpp itself is r-forge and CRAN too.  

I hope you find the package easier to use.  If your DESCRIPTION: has a
Depends: Rcpp then all you need may be (and this is more verbose / longer than
it needs to be -- and this is fron configure.in of the RProtoBuf package also
on R-Forge)


## With thanks to Kurt
if test -z "${R_HOME}"; then
    AC_MSG_ERROR([Could not determine R_HOME.])   

## look for Rscript, but use the one found via R_HOME to allow for multiple installations
if test x"${RSCRIPT}" == x"yes" ; then
    ## Rcpp compile flag providing header directory containing Rcpp.h
    rcpp_cxxflags=`${R_HOME}/bin/Rscript -e 'Rcpp:::CxxFlags()'`
    ## link flag providing libary as well as path to library, and optionally rpath
    rcpp_ldflags=`${R_HOME}/bin/Rscript -e 'Rcpp:::LdFlags()'`
    echo "
  Your installation does not appear to have Rscript installed.

  Please make sure that you have a working and complete R installation.
    exit 1

Ie I ask Rcpp itself about values of -I and -L I need to use (thanks to a
suggestion by Simon).  You then to paste the variab;e rcpp_cxxflags and
rcpp_ldflags into the PKG_CPPFLAGS and PKG_LIBS as I do here (after having
found values for the ProtoBuf lib):

## now use all these
AC_SUBST([PKG_CPPFLAGS],["${PKG_CPPFLAGS} $rcpp_cxxflags $protobuf_cxxflags"])
AC_SUBST([PKG_LIBS],["${PKG_LIBS} $rcpp_ldflags $protobuf_libs"])

That should be it. Other than that, Rcpp.h receives updates required by more
recent g++ versions and some more sanity w.r.t. to namespaces etc.  You may now
need to call Rf_error() instead of error() but that should be it.

Oh, one last thing: I like and prefer dynamic linking, but you can also link
Rcpp statically as you currently do.  There is a 'static=FALSE)' argument to
RcppLdFlags you could tickle.


(PS Please forward to to the phylobase-dev list in case I can't post there as
a non-subscriber)

Three out of two people have difficulties with fractions.

More information about the Phylobase-devl mailing list