Dear R-devel, The Writing R Extensions manual states: 6.14 Platform and version information The header files define USING_R, which can be used to test if the code is indeed being used with R. I suppose this only applies to building R itself?? Or, perhaps when Rcpp is used for the interface, or if one includes R headers explicitly. I have a C++ library that is built with no R-dependencies, then wrapped with an Rcpp interface. This same library is wrapped with pybind11 in the Python world, and directly used in C++ applications. How can the C++ library code "know" that it's R building the library? Is there a platform-independent environment variable or macro? Thanks.
[R-pkg-devel] C++ library USING_R
2 messages · Joseph Park, Dirk Eddelbuettel
On 14 October 2020 at 15:56, Joseph Park wrote:
| Dear R-devel, | | The Writing R Extensions manual states: | | 6.14 Platform and version information | The header files define USING_R, which can be used to test if the code | is indeed being used with R. | | I suppose this only applies to building R itself?? Or, perhaps when Rcpp | is used for the interface, or if one includes R headers explicitly. | | I have a C++ library that is built with no R-dependencies, then wrapped | with an Rcpp interface. This same library is wrapped with pybind11 in | the Python world, and directly used in C++ applications. | | How can the C++ library code "know" that it's R building the library? Is | there a platform-independent environment variable or macro? So if I have this right you have - a library LIB using only standard C++ components - that you wrapped into a Python package via pybind11, and - that you want to build for R and 'let it know it used for R' Well I think you would then use a (wrapper) R package R_LIB and could set up a -DR_BUILD in the src/Makevars for R_LIB. This presume that you actually recompile LIB as part of the build; if you were to link with a static or shared build then you could not do this _for lack of a subsequent compilation_ and can only rely on run-time information. Hope this helps, and that I didn't misunderstand the question. Dirk
https://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org