Le 2013-10-17 16:49, JJ Allaire a écrit :
I think the reason Dirks configuration worked is that he added Rtools
to the path during installation. If Romain didnt do this, then
sourceCpp goes looking for Rtools 2.15 or 2.16 (the initial
development version for R 3.0) and doesnt find it. I just committed a
change that includes R 3.0 and R 3.1 in the whitelist of Rtools
versions we know work correctly.

J.J.

Thanks JJ. I've applied the change to Rcpp11 too.

Indeed my client could not choose the option to change his PATH when using Rtools installer because of some windows admin rights #bs. There could have been other ways to fix it locally, and during the training yesterday, using Rstudio was just fine. I just did not like the idea of having Rtools installed, and usable (i.e. devtools could find it), but not being able to use it from sourceCpp.

Romain

On Thu, Oct 17, 2013 at 3:04 AM, <rom...@r-enthusiasts.com [2]> wrote:

Hello,

On a windows machine where Rtools is installed and works, i.e. I
get:

require(devtools)
has_devel()
"C:/R/R-3.0.2/bin/i386/R" --vanilla CMD SHLIB foo.c

gcc -m32 -I"C:/R/R-30~1.2/include" -DNDEBUG  
 -I"C:/R/R-3.0.2/library/Rcpp/include"
-I"d:/RCompile/CRANpkg/extralibs64/local/include"     -O3 -Wall
 -std=gnu99 -mtune=core2 -c foo.c -o foo.o
gcc -m32 -shared -s -static-libgcc -o foo.dll tmp.def foo.o
C:/R/R-3.0.2/library/Rcpp/lib/i386/libRcpp.a
-Ld:/RCompile/CRANpkg/extralibs64/local/lib/i386
-Ld:/RCompile/CRANpkg/extralibs64/local/lib -LC:/R/R-30~1.2/bin/i386
-lR
[1] TRUE

sourceCpp does not manage to find the tools correctly:

evalCpp( "1+1")

Error in sourceCpp(code = code, env = env, rebuild = rebuild,
showOutput = showOutput,  :
  Error 1 occurred building shared library.

WARNING: The tools required to build C++ code for R were not found.

Please download and install the appropriate version of Rtools:

http://cran.r-project.org/bin/windows/Rtools/ [1]

Using devtools:::R however, I manage to compile the file correctly:

co

cpp::export]]
+ double foo(){
+    
2;
+ }
+
Sys.setenv( "PKG_CXXFLAGS" = Rcpp:::RcppCxxFlags() )
Sys.setenv( "PKG_LIBS" = Rcpp::

B test.cpp", getwd() )
"C:/R/R-3.0.2/bin/i386/R" --vanilla CMD SHLIB test.cpp

g++ -m32 -I"C:/R/R-30~1.2/include" -DNDEBUG    
-I"d:/RCompile/CRANpkg/extralibs64/local/include&q
/R-3.0.2/library/Rcpp/include   -O2 -Wall  -mtune=core2 -c
test.cpp -o test.o
g++ -m32 -shared -s -static-libgcc -o test.dll tmp.def test.o
C:/R/R-3.0.2/library/Rcpp/lib/i386/libRcpp.a
-Ld:/RCompile/CRANpkg/extralibs64/local/lib/i386
-Ld:/RCompile/CRANpkg/extralibs64/local/lib -LC:/R/R-30~1.2/bin/i386
-lR

So perhaps we can borrow some wisdom out of devtools to make
sourceCpp work. As one can expect, the code from sourceCpp that
fails is these lines:

cmd <- paste(R.home(component = "bin"), .Platform$file.sep,
            "R ", "CMD SHLIB ", "-o ",
shQuote(context$dynlibFilename),
            " ", ifelse(rebuild, "--preclean ", ""),
shQuote(context$cppSourceFilename),
            sep = "")

Romain

version
               _
platform       i386-w64-mingw32
arch           i386
os             mingw32
system         i386, mingw32
status

       25
svn rev        63987
language       R
version.string R version 3.0.2 (2013-09-25)
nickname       Frisbee Sailing
packageDescription("Rcpp")$Version
[1] "0.10.5"

_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.

pp-devel" target="_blank">https://lists.r-forge.r-pr
-bin/mailman/listinfo/rcpp-devel



Links:
------
[1] http://cran.r-project.org/bin/windows/Rtools/
[2] mailto:rom...@r-enthusiasts.com

_______________________________________________
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

Reply via email to