<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jun 6, 2017 at 7:50 AM, Stephen Kelly <span dir="ltr"><<a href="mailto:steveire@gmail.com" target="_blank">steveire@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Roger Leigh wrote:<br>
<br>
> Hi folks,<br>
><br>
> I'm currently using this logic to use C++14 with a fallback to C++11<br>
> when C++14 is unavailable:<br>
><br>
>    if(NOT CMAKE_CXX_STANDARD)<br>
>      set(CMAKE_CXX_STANDARD 14)<br>
>    endif()<br>
>    if(NOT CMAKE_CXX_STANDARD_REQUIRED)<br>
>      set(CMAKE_CXX_STANDARD_<wbr>REQUIRED 11)<br>
>    endif()<br>
><br>
> which seems to work OK.<br>
><br>
> However, for some new stuff, I'd like to use C++17 when available, but<br>
> fall back to C++14, C++11 or C++98.  Is it possible to do this?<br>
<br>
</span>Probably set CMAKE_CXX_STANDARD<br>
<br>
without CMAKE_CXX_STANDARD_REQUIRED (That variable doesn't really make sense<br>
to me and I think it is overused when not needed).<br></blockquote><div><br></div><div>If you don't set CMAKE_CXX_STANDARD_REQUIRED, then there's no guarantee you get any particular minimum standard. Roger's example (sorry Roger!) highlights part of the confusion about this latter variable (and the target property it ultimately controls). He appears to be setting it expecting it to specify a minimum version, but that's not how it works. It is expected to be a boolean which says whether CMAKE_CXX_STANDARD must be honoured or not, which most developers (myself included) tend to find unintuitive. Roger's use would actually make it a bit better, if that was how it worked, but unfortunately there's currently no way to set a <i>minimum</i> standard version, only either "I'd like to use <b>up to </b>this version" or "I must use exactly this version". That's back to front, in my view, and pretty much all uses of these that I see want either "I'd like <b>at least</b> this version" or "I must use exactly this version".</div><div><br></div></div><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr">Craig Scott<br><div>Melbourne, Australia</div><div><a href="https://crascit.com" target="_blank">https://crascit.com</a><br></div></div></div></div></div></div></div>
</div></div>