Hi John, Excellent, glad that worked out. In case you (or others on Mac) want to play with C++11: http://gallery.rcpp.org/articles/first-steps-with-C++11/
R compiles with Clang. Clang has pretty complete support for C++11. The older gcc 4.2.x compiler does not. But at this point you will have to compile R from source if you want to go that route. Here is what I do: svn co https://svn.r-project.org/R/branches/R-3-0-branch R-3.0.0 cd R-3.0.0 ./tools/rsync-recommended cd .. arch=x86_64 mkdir R-$arch cd R-$arch export CFLAGS="-arch $arch" export CXXFLAGS="-arch $arch" export OBJCFLAGS="-arch $arch" export FFLAGS="-arch $arch" export FCFLAGS="-arch $arch" ./configure r_arch=$arch CC="clang" CXX="clang" \ F77="gfortran" FC="gfortran" OBJC="clang" \ --x-includes=/opt/X11/include --x-libraries=/usr/X11/lib \ --with-blas='-framework vecLib' --with-lapack make -j12 sudo make install There maybe some typos above as I edited by hand to change anything specific to my machine. "Most" (in my usage, all) packages work with clang. I have never had any issues (and I have been compiling R/Rcpp with Clang for well over a year now). But of course YMMV. Hope that helps. Best, Anirban On Fri, Jun 28, 2013 at 9:04 PM, John Swan <johns...@spamcop.net> wrote: > Hi Anirban, > > Just a quick note to thank you again and inform you that you were quite > right. > > The build of gfortran that you recommended still has a broken link, but it > is still available here: > http://cran.r-project.org/bin/macosx/tools/gfortran-4.2.3.dmg > > Once this is installed alongside Xcode 4.6 and Xcode 5.0 DP, both inline > and sourceCpp now work perfectly, and Xcode development appears to be > unaffected. > > Best regards > John > > > On 27 Jun 2013, at 14:08, Anirban Mukherjee <anirban.mukher...@gmail.com> > wrote: > > Hi John, > > You should only need gfortran. llvm-gcc "should" work. If you don't have > Apple's gcc, then you want the "other" gfortran from the developer website: > > http://r.research.att.com/gfortran-4.2.3.dmg > > The link seems to be down (at least I cannot access it, check with Simon > Urbanek). That gfortran is fully independent. You may be able to find the > binary from other repositories (including Python and Julia repos). I think > this particular binary is used by a lot of folks across these languages. > > I would not expect that installing gfortran would have any impact on the > rest of your development. I have not seen any issues due to any library > from the developer website. Simon is an excellent steward and I tend to > blindly trust his judgment. > > Best, > Anirban > > > On Thu, Jun 27, 2013 at 6:31 PM, John Swan <johns...@spamcop.net> wrote: > >> Hi Anirban, >> >> Thank you for your help. I believe you're right, I was coming to the same >> conclusion myself. >> >> One thing however, I have Mountain Lion with Xcode 4.6 installed for iOS >> development. As far as I understand it, gcc 4.2 is not included with that >> version of Xcode. >> >> Don't I have to install >> gcc-42-5666.3-darwin11.pkg<http://r.research.att.com/tools/gcc-42-5666.3-darwin11.pkg> >> to >> get gcc 4.2 and gfortran? http://r.research.att.com/tools/ states that >> gfortran-lion-5666-3.pkg<http://r.research.att.com/gfortran-lion-5666-3.pkg> >> is >> for those who already have gcc 4.2 installed, but you seem to have it >> working ? >> >> Additionally, can you tell me if installing these packages has any >> adverse effect on your Xcode development environment (llvm-clang, iOS >> development etc)? >> >> Best regards >> John >> >> On 27 Jun 2013, at 04:20, Anirban Mukherjee <anirban.mukher...@gmail.com> >> wrote: >> >> inline + RcppArmadillo work on Mac. I tested the code in a Mac (Mountain >> Lion 10.8.4) before posting. Install gfortran from: >> http://r.research.att.com/gfortran-lion-5666-3.pkg. You can look here >> for more information: http://r.research.att.com/tools/. If that does not >> work, post in R-SIG-Mac. >> >> >> On Wed, Jun 26, 2013 at 7:04 PM, Anirban Mukherjee < >> anirban.mukher...@gmail.com> wrote: >> >>> library(inline); library(RcppArmadillo) >>> >>> rowSumsRA <- cxxfunction(signature(x = "numeric"), >>> plugin="RcppArmadillo", body='return Rcpp::wrap(arma::sum(as<arma::mat> >>> (x),0));') >>> >>> colSumsRA <- cxxfunction(signature(x = "numeric"), >>> plugin="RcppArmadillo", body='return Rcpp::wrap(arma::sum(as<arma::mat> >>> (x),1));') >>> >>> Anirban >>> >>>> Date: Wed, 26 Jun 2013 11:11:04 +0200 >>>> From: John Swan <johns...@spamcop.net> >>>> To: rcpp-devel@lists.r-forge.r-project.org >>>> Subject: [Rcpp-devel] Seamless Rcpp gives errors with RcppArmadillo >>>> Message-ID: <99384497-d7c4-4bc6-859e-c3fa1ab5f...@spamcop.net> >>>> Content-Type: text/plain; charset="windows-1252" >>>> >>>> Hi, >>>> >>>> I just purchased Dirk's book on Seamless Rcpp and I'm finding it very >>>> useful. >>>> >>>> However, I'm having a strange error running RcppArmadillo inline, where >>>> the book examples seem to manage it effortlessly. >>>> I've been stuck on this for hours. Any help is most appreciated. >>>> >>>> I am using R 3.0 on Mac OS X Mountain Lion 10.8.4, sessionInfo output: >>>> > sessionInfo() >>>> R version 3.0.1 (2013-05-16) >>>> Platform: x86_64-apple-darwin10.8.0 (64-bit) >>>> >>>> locale: >>>> [1] en_GB.UTF-8/C/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8 >>>> >>>> attached base packages: >>>> [1] stats graphics grDevices utils datasets methods base >>>> >>>> other attached packages: >>>> [1] inline_0.3.12 RcppArmadillo_0.3.900.0 Rcpp_0.10.3 >>>> BDgraph_2.6 huge_1.2.4 MASS_7.3-26 >>>> igraph_0.6.5-2 >>>> [8] Matrix_1.0-12 lattice_0.20-15 >>>> >>>> loaded via a namespace (and not attached): >>>> [1] grid_3.0.1 tools_3.0.1 >>>> >>>> >>>> I have the following in a source file (somefile.R): >>>> library(Rcpp) >>>> library(inline) >>>> library(RcppArmadillo) >>>> >>>> rowSumsRcppArmadilloFunction <- ' >>>> arma::rowvec rowSumsRcppArmadillo(NumericMatrix x){ >>>> arma::mat X = arma::mat(x.begin(), x.nrow(), x.ncol(), false); >>>> return arma::sum(X, 1); >>>> }' >>>> >>>> rowSumsRcppArmadillo <- cxxfunction(signature(), >>>> plugin="Rcpp", >>>> incl=rowSumsRcppArmadilloFunction, >>>> body=' >>>> return Rcpp::wrap(rowSumsRcppArmadillo()); >>>> ') >>>> >>>> >>>> If I try to execute this in R console with the source command, I get: >>>> >>>> > source("/Users/me/Desktop/R/somefile.R") >>>> file29967eb06d23.cpp:20: error: ?arma? has not been declared >>>> file29967eb06d23.cpp:20: error: expected constructor, destructor, or >>>> type conversion before ?rowSumsRcppArmadillo? >>>> file29967eb06d23.cpp: In function ?SEXPREC* file29967eb06d23()?: >>>> file29967eb06d23.cpp:35: error: ?rowSumsRcppArmadillo? was not declared >>>> in this scope >>>> make: *** [file29967eb06d23.o] Error 1 >>>> >>>> ERROR(s) during compilation: source code errors or compiler >>>> configuration errors! >>>> >>>> Program source: >>>> 1: >>>> 2: // includes from the plugin >>>> 3: >>>> 4: #include <Rcpp.h> >>>> 5: >>>> 6: >>>> 7: #ifndef BEGIN_RCPP >>>> 8: #define BEGIN_RCPP >>>> 9: #endif >>>> 10: >>>> 11: #ifndef END_RCPP >>>> 12: #define END_RCPP >>>> 13: #endif >>>> 14: >>>> 15: using namespace Rcpp; >>>> 16: >>>> 17: >>>> 18: // user includes >>>> 19: >>>> 20: arma::rowvec rowSumsRcppArmadillo(NumericMatrix x){ >>>> 21: arma::mat X = arma::mat(x.begin(), x.nrow(), x.ncol(), false); >>>> 22: return arma::sum(X, 1); >>>> 23: } >>>> 24: >>>> 25: // declarations >>>> 26: extern "C" { >>>> 27: SEXP file29967eb06d23( ) ; >>>> 28: } >>>> 29: >>>> 30: // definition >>>> 31: >>>> 32: SEXP file29967eb06d23( ){ >>>> 33: BEGIN_RCPP >>>> 34: >>>> 35: return Rcpp::wrap(rowSumsRcppArmadillo()); >>>> 36: >>>> 37: END_RCPP >>>> 38: } >>>> 39: >>>> 40: >>>> Error in compileCode(f, code, language = language, verbose = verbose) : >>>> Compilation ERROR, function(s)/method(s) not created! >>>> file29967eb06d23.cpp:20: error: ?arma? has not been declared >>>> file29967eb06d23.cpp:20: error: expected constructor, destructor, or >>>> type conversion before ?rowSumsRcppArmadillo? >>>> file29967eb06d23.cpp: In function ?SEXPREC* file29967eb06d23()?: >>>> file29967eb06d23.cpp:35: error: ?rowSumsRcppArmadillo? was not declared >>>> in this scope >>>> make: *** [file29967eb06d23.o] Error 1 >>>> In addition: Warning message: >>>> running command '/Library/Frameworks/R.framework/Resources/bin/R CMD >>>> SHLIB file29967eb06d23.cpp 2> file29967eb06d23.cpp.err.txt' had status 1 >>>> >>>> I added these: >>>> 20: #include <RcppArmadillo.h> >>>> 21: // [[Rcpp::depends(RcppArmadillo)]] >>>> 22: >>>> 23: // [[Rcpp::export]] >>>> 24: >>>> 25: arma::rowvec rowSumsRcppArmadillo(NumericMatrix x){ >>>> 26: arma::mat X = arma::mat(x.begin(), x.nrow(), x.ncol(), false); >>>> 27: return arma::sum(X, 1); >>>> 28: } >>>> >>>> But then I just get this error: >>>> Error in compileCode(f, code, language = language, verbose = verbose) : >>>> Compilation ERROR, function(s)/method(s) not created! >>>> file77e03dcff275.cpp:20:27: error: RcppArmadillo.h: No such file or >>>> directory >>>> file77e03dcff275.cpp:25: error: ?arma? has not been declared >>>> file77e03dcff275.cpp:25: error: expected constructor, destructor, or >>>> type conversion before ?rowSumsRcppArmadillo? >>>> file77e03dcff275.cpp: In function ?SEXPREC* file77e03dcff275()?: >>>> file77e03dcff275.cpp:40: error: ?rowSumsRcppArmadillo? was not declared >>>> in this scope >>>> make: *** [file77e03dcff275.o] Error 1 >>>> In addition: Warning message: >>>> running command '/Library/Frameworks/R.framework/Resources/bin/R CMD >>>> SHLIB file77e03dcff275.cpp 2> file77e03dcff275.cpp.err.txt' had status 1 >>>> >>>> >>>> >>>> So, I thought I'd try compilng it as a package, but when I try to call >>>> the package in R, I get errors like: >>>> Error in sourceCpp("./R/somefile.R") : >>>> Error 1 occurred building shared library. >>>> >>>> WARNING: The tools required to build C++ code for R were not found. >>>> >>>> Please install Command Line Tools for XCode (or equivalent). >>>> >>>> ld: warning: directory not found for option >>>> '-L/usr/local/lib/gcc/i686-apple-darwin8/4.2.3/x86_64' >>>> ld: warning: directory not found for option '-L/usr/local/lib/x86_64' >>>> ld: warning: directory not found for option >>>> '-L/usr/local/lib/gcc/i686-apple-darwin8/4.2.3' >>>> ld: library not found for -lgfortran >>>> collect2: ld returned 1 exit status >>>> make: *** [sourceCpp_13326.so] Error 1 >>>> >>>> >>>> The XCode command line tools *are* installed - I'm an iOS developer so >>>> I always make sure that they are there: >>>> >>>> John-MBPR:BDGraphSource johnswan$ which llvm-g++ >>>> /usr/bin/llvm-g++ >>>> John-MBPR:BDGraphSource johnswan$ llvm-g++ --version >>>> i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build >>>> 5658) (LLVM build 2336.11.00) >>>> Copyright (C) 2007 Free Software Foundation, Inc. >>>> This is free software; see the source for copying conditions. There is >>>> NO >>>> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR >>>> PURPOSE. >>>> >>>> >>>> Can anyone help? >>>> >>>> Thanks >>>> John >>>> -------------- next part -------------- >>>> An HTML attachment was scrubbed... >>>> URL: < >>>> http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20130626/f34959cc/attachment-0001.html >>>> > >>>> >>>> ------------------------------ >>>> >>> >> _______________________________________________ >> Rcpp-devel mailing list >> Rcpp-devel@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@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel