[Rcpp-devel] sourceCpp and #include .hpp ?

Dirk Eddelbuettel edd at debian.org
Thu Aug 22 01:29:55 CEST 2013


On 19 August 2013 at 22:12, Colin Rundel wrote:
| I've run into the same issue and have been using the Rcpp's plugin framework to
| work around it.
| 
| My R file defines a local_include plugin as follows:
| 
| registerPlugin("local_include", 
|                 function() {
|                     list(env = list(PKG_CXXFLAGS=paste0("-I",path.expand("~/
| Desktop/project/include"))))
|                 }
|               )
| 
| and the cpp file uses that plugin with:
| 
| // [[Rcpp::plugins(local_include)]]
| 
| This also works well if you need to link to some additional library or anything
| else compiler flag related.

Well done. That is the correct approach, using the hooks the build system
provides via the inline package as well as Rcpp Attributes.

Dirk
 
| -Colin
| 
| On Aug 19, 2013, at 8:33 PM, Tal Galili <tal.galili at gmail.com> wrote:
| 
| 
|     Thank you Kevin and Dirk,
|     I was hoping for for an easier fix (such as, having sourceCpp give a
|     parameter controlling where it was building the thing).
|     Thank you both for the explanations.
| 
|     Best,
|     Tal
| 
| 
| 
| 
|     ----------------Contact
|     Details:-------------------------------------------------------
|     Contact me: Tal.Galili at gmail.com | 
|     Read me: www.talgalili.com (Hebrew) | www.biostatistics.co.il (Hebrew) |
|     www.r-statistics.com (English)
|     ----------------------------------------------------------------------------------------------
| 
| 
| 
|     On Tue, Aug 20, 2013 at 2:54 AM, Dirk Eddelbuettel <edd at debian.org> wrote:
| 
| 
|         On 19 August 2013 at 11:51, Kevin Ushey wrote:
|         | If you run sourceCpp(..., verbose=TRUE), you'll see that the source
|         code is
|         | copied into a temporary directory, and then the working directory is
|         reset to
|         | that directory. So the header file is no longer discovered there.
|         (not to
| 
|         Correct.  [ A colleague was just bitten / frustrated by that today. ]
| 
|         | mention, you would have to tell sourceCpp where to find those
|         function
|         | definitions that have been included as well... building a package
|         does that
|         | behind the scenes for you)
|         |
|         | I think you should stay with recompiling the package, rather than
|         switching to
|         | sourceCpp, when debugging a package.
| 
|         You can also use a standard -I/some/path/... switch --- but for the
|         reason
|         Kevin explained so nicely (ie R building in a temp. dir) you cannot
|         just say
|         "use my local dir" via -I. but have to be explicit: -I/home/tal/some/
|         dirk or,
|         if you must -IC:/some/win/doze/path.
| 
|         Longer-term, a package is your friend. And hey, you already have one :)
|        
|         Dirk
| 
|         --
|         Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
|    
| 
|     _______________________________________________
|     Rcpp-devel mailing list
|     Rcpp-devel at lists.r-forge.r-project.org
|     https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
| 
| 
| 
| ----------------------------------------------------------------------
| _______________________________________________
| Rcpp-devel mailing list
| Rcpp-devel at lists.r-forge.r-project.org
| https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com


More information about the Rcpp-devel mailing list