[Rcpp-devel] Using CMakeLists.txt

Richard Downe richard-downe at uiowa.edu
Tue Mar 5 22:44:18 CET 2013


What I've been doing the past couple years, which has worked extremely 
well, is to use a configure script (I've used perl because it allows me 
to do a bunch of other build-time processing that's specific to my 
package, but bash would work fine as well).

All you need (for perl) is:

#!/usr/bin/perl
chdir "src/";
system("cmake .");
chdir "..";
exit(0);

The end result is that R CMD INSTALL [your package] finds an up to date 
makefile in src, but otherwise runs conventionally, and your package 
gets built and installed properly.

-rd


On 03/05/2013 02:09 PM, Dirk Eddelbuettel wrote:
> On 5 March 2013 at 12:21, Etienne B. Racine wrote:
> | I'd like to use a PCL algorithm inside R and they provide a CMakeLists.txt for
> | configuration. I haven't found how to directly use the CMakeLists.txt in
> | building R package, however when I run `make .` form src, I can generate a
> | Makefile  that nearly works with `R CMD INSTALL --no-multiarch`.
>
> Read up a little on CMake. It is at the end of the "just another" frontend /
> make replacement.  If you turn on verbose mode, you should be able to see all
> g++ invocations.
>
> Which is all you need to mimic in Makevars.
>
> | It does compile correctly my .cpp, however I get
> | `Error in library.dynam(lib, package, package.lib) :  shared object
> | ‘my_package.so’ not found`
> |
> | Here's the CMakeFileLists.txt :
> | ```
> | cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
> |
> | find_package(PCL 1.6 REQUIRED)
> |
> | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")
> |
> | include_directories(${PCL_INCLUDE_DIRS})
> | link_directories(${PCL_LIBRARY_DIRS})
> | add_definitions(${PCL_DEFINITIONS})
> |
> | add_executable (segmentation segmentation.cpp)
> | target_link_libraries (segmentation ${PCL_LIBRARIES})
> | ```
> | I've seen that using a makefile wasn't the best practice [1] (I should move it
> | to makevars). Since my CMakeFileLists is apparently simple (e.g. compared to
> | RInside examples), I guess I could move it to makevars however I'm not familiar
> | with cmake nor makevars, so I was wondering if there was documentation about
> | translating from one to the other. However I'm absolutely not sure this is the
> | real problem (using the CMakeLists.txt).
>
> Writing Makefile code is yet another little skill one has to acquire on the
> side once projects get larger.  There is a lot of support though, as there
> are plenty of examples.
>
> Nothing really Rcpp-specific here.
>
> Dirk
>
> |
> | (I'm using R version 2.15.2 (2012-10-26) on x86_64-pc-linux-gnu (64-bit),
> | building from RStudio.)
> |
> | Etienne
> |
> | [1]: http://stackoverflow.com/questions/12976036/
> | how-to-use-usedynlib-correctly-in-an-r-package-namespace-file
> |
> |
> |
> | ----------------------------------------------------------------------
> | _______________________________________________
> | 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



More information about the Rcpp-devel mailing list