Принудительная установка последней версии gcc с помощью cmake - PullRequest
3 голосов
/ 08 февраля 2011

Я развертываю небольшое приложение на нескольких разных системах (mac, linux, linux64), где оно должно быть скомпилировано.Я хотел бы рассказать cmake о последних версиях gcc, доступных в конкретной системе.Например, Mac 10.6 имеет gcc 4.0 и gcc 4.2 (по умолчанию).Но некоторые пользователи также установили gcc 4.4 через MacPorts (по умолчанию это не так).Я хотел бы, чтобы cmake использовал gcc44 в этом случае.В других системах Linux последняя версия gcc - 4.4 или 4.5. Каков более надежный способ добиться этого?

Спасибо,

H

Ответы [ 2 ]

8 голосов
/ 08 февраля 2011

CMake учитывает переменные окружения CC и CXX при обнаружении компилятора C и C ++ для использования.Например, если эти переменные указывают на clang, он будет использовать clang по умолчанию:

$ export CC=/usr/bin/clang
$ export CXX=/usr/bin/clang++
$ cmake ..
-- The C compiler identification is Clang
-- The CXX compiler identification is Clang
-- Check for working C compiler: /usr/bin/clang
-- Check for working C compiler: /usr/bin/clang -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/clang++
-- Check for working CXX compiler: /usr/bin/clang++ -- works
...

Вы можете определить их как общесистемные переменные среды, указывающие на предпочтительные компиляторы, или написать небольшой скрипт оболочки, который проверяетналичие нескольких компиляторов и соответственно устанавливает переменные перед вызовом cmake.

0 голосов
/ 07 сентября 2016

Я должен был добавить это в мой CMakeLists.txt, чтобы он работал:

  if($ENV{CXX})
    set(CMAKE_CXX_COMPILER $ENV{CXX} CACHE FILEPATH "CXX Compiler")
  endif()
  if($ENV{CC})
    set(CMAKE_CC_COMPILER $ENV{CC} CACHE FILEPATH "CC Compiler")
  endif()
...