как установить минимальный C ++ - стандарт без форсирования? - PullRequest
0 голосов
/ 26 марта 2020

У меня есть C ++ - проект, который сам по себе не использует никаких «современных» функций C ++ (вы, вероятно, все еще можете скомпилировать его с помощью MSVC6).

Однако он использует несколько (необязательных) библиотек один из которых требует по крайней мере C ++ 11.

Только недавно я обнаружил, что при построении проекта на macOS с clang ++ - 9.0.0 не будет использоваться библиотека (которая была обнаружена на этапе настройки таким образом, в конечном итоге сборка прошла успешно, просто без этой библиотеки ...), просто потому, что компилятор по умолчанию установил C ++ 98 . (wtf ??)

Простое решение проблемы - просто передать -std=c++11.

Однако передача -std=c++11 компилятору приведет к стандарту C ++ 11, даже если стандарт по умолчанию был чем-то более высоким (например, C ++ 14), что в конечном итоге приводит к понижению путей кода до устаревших / compat-версий.

Кроме того, у меня может быть другая необязательная зависимость, для которой требуется a более новый стандарт.

Поскольку я хотел бы поддерживать максимальную совместимость (со старыми компиляторами) и одновременно поддерживать все мои необязательные зависимости, я задаюсь вопросом:

* Можно ли запросить минимальная стандартная версия от компилятора, возможно, форсирующая обновление стандарта, но никогда не понижает ?

что-то вроде -min-std=c++11 или -std>=c++11 ...

...