[R-pkg-devel] How to update "SystemRequirements: C++11"?

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Mon Feb 6 22:45:57 CET 2023


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



More information about the R-package-devel mailing list