Skip to content

[Rcpp-devel] Compiling issue about Rcpp

4 messages · Ian Fellows, Dirk Eddelbuettel

#
Looks like the same problem described here in http://stackoverflow.com/questions/15489065/rcppeclipse-on-mac-os-x/15532241#15532241 due to Rcpp having a file named string.h which can conflict with std.

Perhaps try using the -idirafter directive?

Best,
Ian
On Apr 18, 2014, at 3:00 AM, <rcpp-devel-request at lists.r-forge.r-project.org> <rcpp-devel-request at lists.r-forge.r-project.org> wrote:

            
#
On 18 April 2014 at 09:12, Ian Fellows wrote:
| Looks like the same problem described here in http://stackoverflow.com/questions/15489065/rcppeclipse-on-mac-os-x/15532241#15532241 due to Rcpp having a file named string.h which can conflict with std.
| 
| Perhaps try using the -idirafter directive?

That issue is new to me (I missed that answer in the SO thread) and thinking
about it for two seconds makes me think it is a non-issue:

  -  the file is actually called String.h (so you need a case-insensitive OS
     for it to clash with string.h)
    
  -  it is included only as #include <Rcpp/String.h> ie via the Rcpp/ directory

  -  but in order to get it you would have to have this

        ${RcppPackageTopLevel}/include/Rcpp   

     added to the include path (via -I or an settings somewhere) instead of
     the normal
   
        ${RcppPackageTopLevel}/include/
   
So I guess this bites you only if you're on a case-insenstive operating
system AND you also chose to add the include/Rcpp dir to the include path.

And removing the include/Rcpp from the include path (where it wasn't needed)
should fix it, no?  

Dirk
#
I may have been the reason that the issue arose as my blog post on Rcpp + RInside + Eclipse listed both /include and /include/Rcpp as header directories. I can?t remember if this was needed at some point in history or if I just thought I?d be thorough  making sure I didn?t miss any headers.

Regardless, it isn?t needed anymore. I?ve edited the blog post (which people still look at quite often) to remove it. I have also edited it to remove references to libRcpp.a as Rcpp is header only now.

http://blog.fellstat.com/?p=170

Best,
Ian
On Apr 18, 2014, at 9:37 AM, Dirk Eddelbuettel <edd at debian.org> wrote:

            
#
On 18 April 2014 at 16:16, Ian Fellows wrote:
| I may have been the reason that the issue arose as my blog post on Rcpp + RInside + Eclipse listed both /include and /include/Rcpp as header directories. I can?t remember if this was needed at some point in history or if I just thought I?d be thorough  making sure I didn?t miss any headers.

I actually saw that blog post (as I believe you posted about it here). I
don't use Eclipse myself but thought it was a pretty good resource.

But yes, we then both overlooked that adding   /include/Rcpp   is actually
asking for trouble.  Users should only ever include   Rcpp.h   and everything
else is relative to Rcpp.h and hence save from clashes.
 
| Regardless, it isn?t needed anymore. I?ve edited the blog post (which people still look at quite often) to remove it. I have also edited it to remove references to libRcpp.a as Rcpp is header only now.

Indeed! So thanks for that update too.

Dirk

 
| http://blog.fellstat.com/?p=170
| 
| Best,
| Ian
| 
| 
|
| On Apr 18, 2014, at 9:37 AM, Dirk Eddelbuettel <edd at debian.org> wrote:
| 
| >
| > On 18 April 2014 at 09:12, Ian Fellows wrote:
| > | Looks like the same problem described here in http://stackoverflow.com/questions/15489065/rcppeclipse-on-mac-os-x/15532241#15532241 due to Rcpp having a file named string.h which can conflict with std.
| > | 
| > | Perhaps try using the -idirafter directive?
| > 
| > That issue is new to me (I missed that answer in the SO thread) and thinking
| > about it for two seconds makes me think it is a non-issue:
| > 
| > -  the file is actually called String.h (so you need a case-insensitive OS
| >    for it to clash with string.h)
| > 
| > -  it is included only as #include <Rcpp/String.h> ie via the Rcpp/ directory
| > 
| > -  but in order to get it you would have to have this
| > 
| >       ${RcppPackageTopLevel}/include/Rcpp   
| > 
| >    added to the include path (via -I or an settings somewhere) instead of
| >    the normal
| > 
| >       ${RcppPackageTopLevel}/include/
| > 
| > So I guess this bites you only if you're on a case-insenstive operating
| > system AND you also chose to add the include/Rcpp dir to the include path.
| > 
| > And removing the include/Rcpp from the include path (where it wasn't needed)
| > should fix it, no?  
| > 
| > Dirk
| > 
| > -- 
| > Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
|