2016-09-13 4 views
1

Я пытаюсь построить Trilinos на моем OS X 10.11.6 ноутбук и сохранить сталкиваясь со следующей проблемой: CMake использует Apple, Clang вместо GCCOS X: CMake игнорирует CMAKE_C_COMPILER

... 

Probing the environment ... 

-- USE_XSDK_DEFAULTS='FALSE' 
-- CMAKE_BUILD_TYPE='RELEASE' 
-- BUILD_SHARED_LIBS='FALSE' 
-- CMAKE_C_COMPILER_ID='AppleClang' 
-- CMAKE_C_COMPILER_VERSION='7.3.0.7030031' 
-- CMAKE_CXX_COMPILER_ID='AppleClang' 
-- CMAKE_CXX_COMPILER_VERSION='7.3.0.7030031' 

... 

Несмотря на то, что я прошел GCC/г ++ адрес в качестве аргумента в вызове:

cmake -D CMAKE_C_COMPILER=/usr/bin/gcc -D CMAKE_CXX_COMPILER=/usr/bin/g++ .. 

Я установил GCC и G ++ отдельно:

$ gcc --version 

gcc (GCC) 4.9.2 20141029 (prerelease) 

Copyright (C) 2014 Free Software Foundation, Inc. 

UPD Если кто-то заинтересован, я отказался и продвинул разработку к ubuntu. Если вы нашли способ сделать это, пожалуйста, прокомментируйте ниже

+0

Пожалуйста, введите 'тип gcc' в оболочке и сообщите о выходе. Также введите '/ usr/bin/gcc -version' и сообщите о выходе. – fuz

+0

@FUZxxl, '/ usr/bin/gcc' дает LLVM от Apple, но'/usr/local/bin/gcc' дает компилятор GNU. Я попытался передать '/ usr/local/bin/gcc' в CMake с тем же недостатком успеха. –

+1

Обязательно удалите кэшированную конфигурацию cmake, сгенерированную в предыдущем проходе, чтобы убедиться, что обновленный компилятор фактически используется. – fuz

ответ

0

Когда компилятор установлен явно, CMake не пытается угадать его идентификации (переменные *_COMPILER_ID и *_COMPILER_VERSION.

Если вы хотите (и, как правило, вам хочу) эту идентификацию, чтобы правильно отражать ваш компилятор, вам необходимо установить эти переменные явно тоже.

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

+0

Дело в том, что llvm от Apple не может скомпилировать простой тестовый код с fortran, в то время как GNU gcc должен делать это хорошо. Кроме того, информация об ошибке для сбоя сборки указывает, что она пыталась использовать компилятор с адресом '/ Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin', поэтому он, конечно же, не забирает правый компилятор –

+0

Хм, на самом деле обе переменные 'CMAKE_C_COMPILER' и' CMAKE_CXX_COMPILER' кэшируются. Вы можете проверить * CMakeCache.txt * файл в каталоге сборки и проверить их значения. – Tsyvarev

+1

@RuslanShaidulin Это потому, что llvm не поддерживает Fortran. Почему вы отмечаете этот вопрос как C, когда пытаетесь скомпилировать проект Fortran? – fuz