@@ -182,6 +182,12 @@ vignette( "Rcpp-package" )
182
182
@
183
183
184
184
\subsection {How do I quickly prototype my code? }
185
+
186
+ There are two toolchains which can help with this. The older one is provided
187
+ by the \pkg {inline} package and described in Section~\ref {using-inline }.
188
+ Starting with \pkg {Rcpp} 0.10.0, the Rcpp Attributes feature offered an even
189
+ easier alternative. It is described in Section~\ref {using-attributes }.
190
+
185
191
\subsubsection {Using inline }
186
192
\label {using-inline }
187
193
@@ -224,7 +230,8 @@ useful as it shows how \pkg{inline} runs the show.
224
230
\subsubsection {Using Rcpp Attributes }
225
231
\label {using-attributes }
226
232
227
- Rcpp Attributes \citep {CRAN:Rcpp:Attributes }, discussed in \faq {using-attributes} below, permits an even easier
233
+ Rcpp Attributes \citep {CRAN:Rcpp:Attributes }, and also discussed in
234
+ \faq {prototype-using-attributes} below, permits an even easier
228
235
route to integrating R and C++. It provides three key functions. First, \code {evalCpp}
229
236
provide a means to evaluate simple C++ expression which is often useful for
230
237
small tests, or to simply check if the toolchain is set up
@@ -257,6 +264,10 @@ transform a prototyped function into the minimal structure of a package.
257
264
After that you can proceed with working on the package in the spirit of
258
265
\faq {make-package}.
259
266
267
+ Rcpp Attributes \citep {CRAN:Rcpp:Attributes } also offers a means to convert
268
+ functions written using Rcpp Attributes into a function via the
269
+ \code {compileAttributes()} function; see the vignette for details.
270
+
260
271
\subsection {How do I quickly prototype my code in a package? }
261
272
\label {using-a-package }
262
273
@@ -289,6 +300,9 @@ The example then becomes
289
300
The \code {-l} option calls 'suppressMessages(library(mypkg))' before executing the
290
301
\proglang {R} expression. Several packages can be listed, separated by a comma.
291
302
303
+ More choice are provide by the \pkg {devtools} package, and by using
304
+ RStudio. See the respective documentation for details.
305
+
292
306
\subsection {But I want to compile my code with R CMD SHLIB ! }
293
307
\label {using-r-cmd-shlib }
294
308
@@ -347,7 +361,10 @@ user. How to do so has been shown above, and we recommned you use either
347
361
function \texttt {Rcpp:::LdFlags() }.
348
362
349
363
If and when \texttt {LinkingTo } changes and lives up to its name, we will be
350
- sure to adapt \pkg {Rcpp} as well.
364
+ sure to adapt \pkg {Rcpp} as well.
365
+
366
+ An important change arrive with \pkg {Rcpp} release 0.11.0 and concern the
367
+ automatic registration of functions; see Section~\ref {function-registration } below.
351
368
352
369
353
370
\subsection {Does \pkg {Rcpp} work on windows ? }
@@ -367,19 +384,25 @@ complain to its vendor if you are still upset.
367
384
\subsection {I am having problems building Rcpp on OS X, any help ? }
368
385
\label {q:OSX }
369
386
370
- OS X is a little more conservative with compiler versions, so it pays to get
371
- the latest of whatever Apple releases which may already be a little behind
372
- what is used on Linux or Windows.
373
-
374
- At the time of writing this paragraph (in the spring of 2011), \pkg {Rcpp}
375
- (just like CRAN) supports all OS X releases greater or equal to 10.5.
376
- However, building \pkg {Rcpp} from source (or building packages using
377
- \pkg {Rcpp}) also requires a recent-enough version of Xcode. For the
378
- \textsl {Leopard} release of OS X, the current version is 3.1.4 which can be
379
- downloaded free of charge from the Apple Developer site. Users may have to
380
- manually select \code {g++-4.2} via the symbolic link \code {/usr/bin/g++}.
381
- The \textsl {Snow Leopard} release already comes with Xcode 3.2.x and work as
382
- is.
387
+ OS X used to be a little more conservative with compiler versions as Apple
388
+ stuck with gcc-4.2. Following the 'Mavericks' release, it is the opposite as
389
+ only llvm is provide in Xcode---while the R build provided by CRAN still has
390
+ hardwired settings for the gcc/g++ combination. Until that is resolved, users
391
+ either need to create softlinks (say, in, \code {/usr/local/bin}) or override
392
+ the \code {CC} and \code {CXX} variables via a file \code {~/.R/Makevars} or its
393
+ system-equivalent in R's \code {etc/} directory.
394
+
395
+ Compilation from source is recommended. See the \code {r-sig-mac} mailing for
396
+ further details.
397
+ % At the time of writing this paragraph (in the spring of 2011), \pkg{Rcpp}
398
+ % (just like CRAN) supports all OS X releases greater or equal to 10.5.
399
+ % However, building \pkg{Rcpp} from source (or building packages using
400
+ % \pkg{Rcpp}) also requires a recent-enough version of Xcode. For the
401
+ % \textsl{Leopard} release of OS X, the current version is 3.1.4 which can be
402
+ % downloaded free of charge from the Apple Developer site. Users may have to
403
+ % manually select \code{g++-4.2} via the symbolic link \code{/usr/bin/g++}.
404
+ % The \textsl{Snow Leopard} release already comes with Xcode 3.2.x and work as
405
+ % is.
383
406
384
407
\subsection {Does \pkg {Rcpp} work on solaris/suncc ? }
385
408
@@ -401,7 +424,7 @@ CXXR and \pkg{Rcpp} both want \proglang{R} to make more use of \proglang{C++}
401
424
but they do it in very different ways.
402
425
403
426
\subsection {How do I quickly prototype my code using Attributes? }
404
- \label {using-attributes }
427
+ \label {prototype- using-attributes }
405
428
406
429
\pkg {Rcpp} version 0.10.0 and later offer a new feature 'Rcpp Attributes'
407
430
which is described in detail in its own vignette
@@ -410,6 +433,30 @@ which is described in detail in its own vignette
410
433
\code {cxxfunction} function.
411
434
412
435
436
+ \subsection {What about the new 'no-linking' feature?? }
437
+ \label {function-registration }
438
+
439
+ Starting with \pkg {Rcpp} 0.11.0, functionality provided by \pkg {Rcpp} and
440
+ used by packages built with \pkg {Rcpp} accessed via the registration facility
441
+ offered by R (and which is used by \pkg {lme4} and \pkg {Matrix}, as well as by
442
+ \pkg {xts} and \pkg {zoo}). This requires no effort from the user /
443
+ programmer, and even frees us from explicit linking instruction. In most
444
+ cases, the files \code {src/Makevars} and \code {src/Makevars.win} can now be
445
+ removed. Exceptions are the use of \pkg {RcppArmadillo} (which needs an entry
446
+ \verb |PKG_LIBS=$(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) |) and packages linking
447
+ to external libraries they use.
448
+
449
+ But for most packages using \pkg {Rcpp}, only two things are required:
450
+ \begin {itemize }
451
+ \item an entry in \code {DESCRIPTION} such as \code {Imports: Rcpp} (which may
452
+ be versioned as in \code {Imports: Rcpp (>= 0.11.0)}), and
453
+ \item an entry in \code {NAMESPACE} to ensure \pkg {Rcpp} is correctly
454
+ instantiated, for example \code {importFrom(Rcpp, evalCpp)}.
455
+ \end {itemize }
456
+
457
+ The name of the symbol does really matter; once one symbol is important all
458
+ should be available.
459
+
413
460
414
461
\section {Examples }
415
462
@@ -456,8 +503,9 @@ fun <- cxxfunction(signature(xs="numeric", is="integer"),
456
503
fun(2.2 , 3L )
457
504
@
458
505
459
- Update: Also see \faq {using-attributes} above about 'Rcpp
460
- Attributes' \citep {CRAN:Rcpp:Attributes } and its \code {sourceCpp} function.
506
+ Update: Also see \faq {using-attributes} and \faq {prototype-using-attributes}
507
+ above about 'Rcpp Attributes' \citep {CRAN:Rcpp:Attributes } and its
508
+ \code {sourceCpp} function.
461
509
462
510
\subsection {Can I do matrix algebra with \pkg {Rcpp} ? }
463
511
\label {matrix-algebra }
0 commit comments