Есть ли способ в CMake потребовать GCC версии 4+?

StackOverflow https://stackoverflow.com/questions/435708

  •  22-07-2019
  •  | 
  •  

Вопрос

Я использую некоторые функции, предоставляемые в GCC v4+, и хотел бы, чтобы CMake нашел компилятор GCC v4, а если он его не находит, вернул ошибку, сообщающую, что требуется GCC v4.

Есть у кого-нибудь модули/идеи, как сделать что-то подобное?

Спасибо.

Это было полезно?

Решение

Используйте команду try_compile() и попробуйте скомпилировать следующую программу

#if __GNUC__ != 4
#error
#endif
int main() { return 0; }

Другие советы

Совершенно другой (не обязательно лучший) способ реализации проверки версии gcc будет выглядеть примерно так:

if(CMAKE_COMPILER_IS_GNUCXX)
  exec_program(
      ${CMAKE_CXX_COMPILER}
      ARGS                    --version
      OUTPUT_VARIABLE _compiler_output)
  string(REGEX REPLACE ".* ([0-9]\\.[0-9]\\.[0-9]) .*" "\\1"
         gcc_compiler_version ${_compiler_output})
  message(STATUS "C++ compiler version: ${gcc_compiler_version} [${CMAKE_CXX_COMPILER}]")

  if(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]")
    message(FATAL_ERROR "foobar")
    ...

  if(gcc_compiler_version VERSION_GREATER "4.5.99")
  ...
...

Возможно, вскоре появится решение в самом cmake, см. http://cmake.3232098.n2.nabble.com/GCC-compiler-version-td7185771.html

Будущие выпуски cmake могут включать две переменные: CMAKE_C_COMPILER_VERSION и CMAKE_CXX_COMPILER_VERSION.

Увы, я еще не видел их в журнале изменений 2.8.8.

Сейчас я использую решение @cmaker.

Также имеется файл цепочки инструментов, который упоминается в vtk wiki.Это позволяет вам указывать собственные цепочки инструментов.Обычно он используется для кросс-компиляции, но я использовал его раньше, чтобы заставить работать другие наборы инструментов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top