Ich habe ein R-Paket für die ich eine MCMC Algorithmus Algebra C++
enthaltenden Matrix bewegte unter Verwendung des RcppEigen
Paket, das die Geschwindigkeit dramatisch verbessert.Wie kann ich die Makevars-Datei für ein Rcpp (RcppEigen) -Paket verbessern?
jedoch R CMD check
gibt die folgende NOTE
auf Linux (Thanks to R-Forge):
* checking installed package size ... NOTE
installed size is 6.6Mb
sub-directories of 1Mb or more:
libs 6.1Mb
Diese Warnung wird wahrscheinlich nicht von der unglaublichen Größe meiner C++ Code (which is only around 150 lines) angetrieben wird, da es nur auf Linux erscheint, aber wahrscheinlich durch meine Unfähigkeit, die Makevars
Datei korrekt zu konfigurieren. (Ich habe noch nie zuvor make
oder makefile
verwendet).
Auch beim Senden des Pakets an CRAN
, schrieb Brian Ripley etwas in Bezug auf diese NOTE
, die mich erwarten, dass es ein Makevars
Problem ist: "Es kommt aus dem Debuggen von Symbolen."
Meine Makevars
sind der Standard Rcpp
Makevars
(unten angegeben), hergestellt von Rcpp.package.skeleton
.
Meine Fragen:
- Wie kann ich meine
Makevars
in so konfigurieren, dass die Größe der kompilierten Bibliothek auf Linux reduziert (das heißt, derNOTE
loswerden)? - Was sind gute Ressourcen auf, wie in den Zauber von
Makevars
fürRcpp
zu bekommen?
(ich irgendetwas in der Gallery nicht finden und die R extension manual on this war mir auch unverständlich)
mein Makevars
:
## Use the R_HOME indirection to support installations of multiple R version
PKG_LIBS = `$(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()"`
PKG_CPPFLAGS = -I. -I../inst/include
mein Makevars.win
:
## This assume that we can call Rscript to ask Rcpp about its locations
## Use the R_HOME indirection to support installations of multiple R version
PKG_LIBS = $(shell $(R_HOME)/bin/Rscript.exe -e "Rcpp:::LdFlags()")
PKG_CPPFLAGS = -I. -I../inst/include
Vielen Dank für die Antwort, zu klären nur: Was ist Ihr sagen, ist im Grunde (a) gibt es wirklich kein Problem, kommt die Größe aus der Struktur der 'Eigen', (b) Es gibt keine empfohlenen 'CXXFLAGS'-Flags, die für' RcppEigen' gesetzt werden können, und (c) wenn Sie die Flags ändern wollen, gehen Sie in die grundlegende Makefile-Syntax und -Optionen_. Versteh ich dich richtig? – Henrik
Ja zu a) und c); wir sagen, was du in b) brauchst und dir geben; Sehen Sie sich die RcppEigen-Dokumente, Beispiele und das Skeleton-Paket an - aber im Wesentlichen benötigen Sie nur LinkingTo: RcppEigen. Sie verwenden RcppEigen, und nicht die Kopie von Eigenen, richtig? –
Ja, ich benutze 'RcppEigen' und wahrscheinlich habe ich' RcppEigen.package.skeleton' benutzt (wie ich 'RcppEigen' vor' Rcpp' auf beiden Seiten und LinkingTo in 'DESCRIPTION') habe. Meine Frage ist vielleicht, ob es sinnvoll ist, z.B. die berühmte '-O3'-Option (und wenn ja, wie)? – Henrik