Любой способ в CMake требовать GCC версии 4+? - PullRequest
7 голосов
/ 12 января 2009

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

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

Спасибо.

Ответы [ 4 ]

9 голосов
/ 12 января 2009

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

#if __GNUC__ != 4
#error
#endif
int main() { return 0; }
8 голосов
/ 04 июля 2011

Совершенно другой (не обязательно лучший) способ реализации проверки версии 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")
  ...
...
4 голосов
/ 21 августа 2012

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

В будущих выпусках cmake могут быть две переменные: CMAKE_C_COMPILER_VERSION и CMAKE_CXX_COMPILER_VERSION .

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

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

0 голосов
/ 27 октября 2011

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

...