On 06/02/2023 4:01 p.m., Duncan Murdoch wrote:
On 06/02/2023 3:46 p.m., Winston Chang wrote:
I recently submitted a package to CRAN with "SystemRequirements: C++11".
This raises the following NOTE on R-devel, and I was asked to fix and
resubmit:

* checking C++ specification ... NOTE
    Specified C++11: please update to current default of C++17

If I understand correctly, I have two options, neither of which will work:
1. Remove "SystemRequirements: C++11" entirely. The problem with this is
that on systems with older versions of R (3.6 and below, I believe), it may
try to compile the package with an older C++ standard, which will fail.
2. Update it to "SystemRequirements: C++17". The problem here is that on
systems that don't have a C++17 compiler, the package won't build -- even
though the package only actually requires a C++11 compiler.

How should I deal with this?

Are you allowed to say "C++11 or C++17"?

Actually I can partially answer this: the test is not based on SystemRequirements, but on the log of the build, which now contains lines like this:

  using C compiler: ‘Apple clang version 12.0.0 (clang-1200.0.32.28)’
  using C++ compiler: ‘Apple clang version 12.0.0 (clang-1200.0.32.28)’
  using C++11
  using SDK: ‘MacOSX11.1.sdk’

I get "using C++11" because of this line in Makevars:

  CXX_STD = CXX11

So I guess the answer is to change your Makevars to make that line conditional on running under an old version of R. If you figure out how to do that, could you post the recipe here?

Duncan Murdoch

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

Reply via email to