Also, you're failing to tell CMake to build a shared library.
You need
SET(CMAKE_C++_CREATE_SHARED_LIBRARY 1)

And if you're using Rcpp, also need to explicitly add Rcpp link flags (Rscript -e Rcpp:::LdFlags())
-rd

On 03/05/2013 03:44 PM, Richard Downe wrote:
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
| [email protected]
| https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

_______________________________________________
Rcpp-devel mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

_______________________________________________
Rcpp-devel mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to