(Этот вопрос действительно о части "или позже".)
Мне известны другие ответы, которые говорят нам активировать C ++ 11 для цели / проекта в cmake.
Мой вопрос на самом деле, как мы можем выразить C ++ 11 или более позднюю версию.
Начиная с CMake 3.8, у нас есть cxx_std_11
-функция, которая заставляет C ++ 11 на компиляторах (-std=c++11
), которые даже поддерживают более поздние стандарты и могут даже по умолчанию использовать C ++ 14 (gcc-7) или даже 17 (gcc-8, iiuc).
Существует также свойство CXX_STANDARD-target-свойство, но оно не является транзитивным и также устанавливает точный стандарт, а не опцию «или позже».
Единственный способ, который я нашел до сих пор, - это потребовать cxx_range_for
(или аналогичную функцию), которая заставляет CMake поддерживать стандарт C ++ по умолчанию для компилятора, если поддерживается хотя бы C ++ 11. Это поддерживается с CMake 3.1.
Как правильно выбрать C ++ 11 или более позднюю версию CMake-target?