Средство CMake для установки стандарта C ++ на "как минимум C ++ NN" - PullRequest
0 голосов
/ 03 февраля 2020

Я пишу библиотеку на C ++, которая поддерживает C ++ 11 или более позднюю версию. К счастью, с C ++ 14 он может избежать определенных внешних зависимостей. Итак, я бы хотел бы построить его с более новым C ++, если он доступен, но я могу жить с C ++ 11.

Как я могу express это в CMake? т.е. как я могу сказать ему установить «самую высокую стандартную версию C ++, которой вы можете управлять, но не меньше, чем C ++ 11»?

1 Ответ

1 голос
/ 03 февраля 2020

с C ++ 14 позволяет избежать определенных внешних зависимостей.

Поэтому вам сначала нужно проверить , поддерживается ли C ++ 14 или нет. В соответствии с результатами проверок вы можете собрать свою библиотеку с C ++ 14, если она поддерживается, или с C ++ 11 с дополнительной зависимостью.

if(cxx_std_14 IN_LIST CMAKE_CXX_KNOWN_FEATURES)
  # C++14 is available. Use it.
  set(CMAKE_CXX_STANDARD 14)
  # ...
else()
  # C++14 is not available. Resort to C++11.
  # ... add external dependency
  set(CMAKE_CXX_STANDARD 11)
  # ...
endif()

В приведенном выше фрагменте кода используется CMAKE_CXX_KNOWN_FEATURES переменная для проверки, включает ли она функцию или нет. Обратите внимание, что эта переменная устанавливается после вызова project().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...