On 12-02-19 04:56 PM, Simon Urbanek wrote:
Paul,

On Feb 19, 2012, at 2:45 PM, Paul Gilbert wrote:

I am trying to add

#include<R.h>

to a .c file in one of my package, so I can call error() without a complaint 
about implicit defined function. The src/ has a Makefile, to build some exec/ 
files that are needed. Without the include, my Makefile target

OBJS = $(SRC:.c=.o)

$(PKGNAME).so: $(OBJS) rpcx.h
        $(R_HOME)/bin/R CMD SHLIB  $(OBJS)

seems to work fine, and I do not need a target for the .o's, the default works. 
But when I add the include, the location of R.h does not get passed along. How 
am I suppose to specify $(R_HOME)lib/R/include so that it gets passed along by 
R CMD SHLIB ?


I assume you know that the above general approach won't work very well, so I 
won't go there... (you don't need Makefile to just add targets).

Simon

I'm not sure if I understand this. I know I could add targets in Makevars or Makerules, but do you means something else? I also need to build some executables and move then into exec/, which I think also implies I need to change the default target in src/. Isn't a Makefile the only way to do that? (I know you said you won't go here, but now I' curious.)

But your immediate problem is that you want to use R CMD SHLIB $(SRC) and not 
$(OBJS), otherwise you'll be missing all C*FLAGS (which includes -I that is 
needed for the headers) since the compilation will be done by your Makefile and 
not R.

Thanks, that fixed it!
Paul

Cheers,
Simon


______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to