LINUX.ORG.RU

No CMAKE_C_COMPILER could be found

 , , ,


0

1

Добрый день!

Система: linux mint 18.1 serena. Вышла пару дней назад, думаю, это важно. Qt брал с оф-сайта онлайн-инстайллер qt-unified-linux-x64-2.0.4-online Получил: Qt Creator 4.2 Qt 5.7.1

cmake 3.5.1 из оф-репов дистра

Установил из оф-репов: gcc g++ gdb cmake libfontconfig1 mesa-common-dev build-essential libglu1-mesa-dev -y

т.е. все, что необходимо - установлено.

Создаю самый обычный проект c++ без использования qt с cmake и получаю такую ошибку:

/home/flixis/Project/Qt/Test_Project/CMakeLists.txt:3: ошибка: No CMAKE_C_COMPILER could be found. Tell CMake where to find the compiler by setting either the environment variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to the compiler, or to the compiler name if it is in the PATH.
:-1: ошибка: *** процесс cmake завершился с кодом 1.

Выполнение "/usr/bin/cmake /home/flixis/Project/Qt/Test_Project '-GCodeBlocks - Unix Makefiles' -DCMAKE_CXX_COMPILER:STRING=/usr/bin/g++ -DCMAKE_C_COMPILER:STRING= -DCMAKE_PREFIX_PATH:STRING=/home/flixis/Programs/Qt/5.7/gcc_64 -DQT_QMAKE_EXECUTABLE:STRING=/home/flixis/Programs/Qt/5.7/gcc_64/bin/qmake" в /tmp/qtc-cmake-udIXZu.
Выполнение "/usr/bin/cmake /home/flixis/Project/Qt/Test_Project '-GCodeBlocks - Unix Makefiles' -DCMAKE_CXX_COMPILER:STRING=/usr/bin/g++ -DCMAKE_C_COMPILER:STRING= -DCMAKE_PREFIX_PATH:STRING=/home/flixis/Programs/Qt/5.7/gcc_64 -DQT_QMAKE_EXECUTABLE:STRING=/home/flixis/Programs/Qt/5.7/gcc_64/bin/qmake" в /tmp/qtc-cmake-vLmdIP.
-- The C compiler identification is unknown
-- The CXX compiler identification is GNU 5.4.0
CMake Error at CMakeLists.txt:3 (project):
  No CMAKE_C_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
  the compiler, or to the compiler name if it is in the PATH.


-- Check for working CXX compiler: /usr/bin/g++
-- Check for working CXX compiler: /usr/bin/g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring incomplete, errors occurred!
See also "/tmp/qtc-cmake-vLmdIP/CMakeFiles/CMakeOutput.log".
See also "/tmp/qtc-cmake-vLmdIP/CMakeFiles/CMakeError.log".
*** процесс cmake завершился с кодом 1.
Выполнение "/usr/bin/cmake /home/flixis/Project/Qt/Test_Project '-GCodeBlocks - Unix Makefiles' -DCMAKE_CXX_COMPILER:STRING=/usr/bin/g++ -DCMAKE_C_COMPILER:STRING= -DCMAKE_PREFIX_PATH:STRING=/home/flixis/Programs/Qt/5.7/gcc_64 -DQT_QMAKE_EXECUTABLE:STRING=/home/flixis/Programs/Qt/5.7/gcc_64/bin/qmake" в /tmp/qtc-cmake-vLmdIP.
-- The C compiler identification is unknown
-- The CXX compiler identification is GNU 5.4.0
CMake Error at CMakeLists.txt:3 (project):
  No CMAKE_C_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
  the compiler, or to the compiler name if it is in the PATH.


-- Check for working CXX compiler: /usr/bin/g++
-- Check for working CXX compiler: /usr/bin/g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring incomplete, errors occurred!
See also "/tmp/qtc-cmake-vLmdIP/CMakeFiles/CMakeOutput.log".
See also "/tmp/qtc-cmake-vLmdIP/CMakeFiles/CMakeError.log".
*** процесс cmake завершился с кодом 1.
Выполнение "/usr/bin/cmake /home/flixis/Project/Qt/Test_Project '-GCodeBlocks - Unix Makefiles' -DCMAKE_CXX_COMPILER:STRING=/usr/bin/g++ -DCMAKE_C_COMPILER:STRING= -DCMAKE_PREFIX_PATH:STRING=/home/flixis/Programs/Qt/5.7/gcc_64 -DQT_QMAKE_EXECUTABLE:STRING=/home/flixis/Programs/Qt/5.7/gcc_64/bin/qmake" в /tmp/qtc-cmake-vLmdIP.
-- The C compiler identification is unknown
CMake Error at CMakeLists.txt:3 (project):
  No CMAKE_C_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
  the compiler, or to the compiler name if it is in the PATH.


-- Configuring incomplete, errors occurred!
See also "/tmp/qtc-cmake-vLmdIP/CMakeFiles/CMakeOutput.log".
See also "/tmp/qtc-cmake-vLmdIP/CMakeFiles/CMakeError.log".
*** процесс cmake завершился с кодом 1.

Захожу в папку с проектом и в терминале выполняю:

flixis@linux ~/Project/Qt/Test_Project $ cmake .
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/flixis/Project/Qt/Test_Project
flixis@linux ~/Project/Qt/Test_Project $ make
Scanning dependencies of target Test_Project
[ 50%] Building CXX object CMakeFiles/Test_Project.dir/main.cpp.o
[100%] Linking CXX executable Test_Project
[100%] Built target Test_Project
flixis@linux ~/Project/Qt/Test_Project $ 

Совершенно не понимаю, в чем причина. Переустанавливал qt, не помогает. На другом ноуте снес старое qt, и поставил свежее - там все отрабатывает нормально, но там система linux mint 18 sara.

В cmake такие переменные:

CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}

Переменные path:

/home/flixis/bin:/home/flixis/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

-DCMAKE_C_COMPILER:STRING=

Тут два варианта: либо ты что-то намудрил при настройке проекта в QtCreator, либо этот твой QtCreator-с-официального-сайта — дно.

Stil ★★★★★ ()

У тебя сверху же ясно написано почему:

-DCMAKE_C_COMPILER:STRING=

в коммандной строке cmake ты затираешь компилятор.

invy ★★★★★ ()
Ответ на: комментарий от Stil

QtCreator-с-официального-сайта — дно.

вообще по опыту могу сказать, что этот qtcreator как раз хорошо работает.

invy ★★★★★ ()
Ответ на: комментарий от Stil

Всегда работал нормально. Поставил на другом ноуте на предыдущей версии минта(18 Sara), там все норм. В настройках проекта все по дефолту. Со старыми проектами все тоже самое.

FliXis ()
Ответ на: комментарий от invy

Можно чуть подробнее, что именно нужно сделать, дабы это исправить? Если Вам не трудно конечно. Сталкиваюсь в первый раз, да и эти настройки для меня пока темный лес, никогда в них не лазил.

FliXis ()

А вот это:

В cmake такие переменные:
CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}

Где? В CMakeFile? Где-то в QtCreator?

Энивей, можно туда просто вписать /usr/bin/gcc

Stil ★★★★★ ()
Ответ на: комментарий от Stil

Огромное спасибо! Все получилось! А это уже был 4й форум по счету, где я спрашивал о решении проблемы!

Просто удалил строку CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}

Стало так:

CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}

Что забавно, на втором ноуте в этой же версии qt сейчас так:

CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable}
QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}

И там жаловалось, что нет QT_INSTALL_PREFIX, я его туда потом добавил и жаловаться перестало.

Возникло два вопроса: 1) Почему по дефолту прописались разные параметры в этом меню креатора на двух разных системах? 2) В чем разница между Compiler:Executable:Cxx и Compiler:Executable ?

FliXis ()
Ответ на: комментарий от FliXis

Все получилось!

Пометь тему решённой.

Почему по дефолту прописались разные параметры в этом меню креатора на двух разных системах?

Хз, а креаторы точно одной версии? https://github.com/qtproject/qt-creator/blob/8f0ddff1ccb402d8fdc68ec061292054...

В чем разница между Compiler:Executable:Cxx и Compiler:Executable ?

Первое — это «компилятор для С++ из текущего набора», второе — это «компилятор из текущего набора». https://github.com/qtproject/qt-creator/blob/43c6e97529e571b5702b2ca04f18ab67...

Stil ★★★★★ ()

Та же ситуация на Debian 8. QtCreator брал с сайта Qt. Вылечил установкой CMAKE_C_COMPILER в списке переменных cmake для проекта. Это, конечно, хак, потому что при использовании нескольких китов (компиляторов, например, clang, gcc) придется каждый раз вручную менять содержимое CMAKE_C_COMPILER.

Жду следующего QtCreator, в нем обещают перейти на cmake server, наверняка и этого косяка переделки как-то коснутся.

chimera19 ()
Ответ на: комментарий от Stil

Энивей, можно туда просто вписать /usr/bin/gcc

У меня не сработало. Даже если удалить строки с указанием компиляторов C и CXX, то они все равно будут устанавливаться (для C пустая строка, для CXX - то, что надо).

chimera19 ()
Ответ на: комментарий от FliXis

Огромное спасибо! Все получилось!

А теперь закрой QtCreator, удали CMakeLists.txt.user и содержимое папки, где запускал cmake и заново запусти QtCreator с этим проектом. У меня ошибка оставалась до тех пор, пока я не прописал CMAKE_C_COMPILER в настройках проекта (открывается по Ctrl+5).

chimera19 ()
Ответ на: комментарий от FliXis

Оттуда и CMAKE_CXX_COMPILER убрать надо.

Эти две переменные позволяют выбрать нужный комилятор. Если их не указывтаь, cmake сам находит подходящий. Иногда имеет смысл указать, если нужно какой-то конкретный.

invy ★★★★★ ()
Последнее исправление: invy (всего исправлений: 1)
Ответ на: комментарий от chimera19

QtCreator делает с cmake непонятные манипуляции. Самый адекватный вариант на мой взгляд, пока что, просто создать каталог для сорки, запустить руками из консоли там один раз cmake path_to_source youroptions ..., а потом подсунуть qtcreator'у этот каталог в качестве ктаалога сборки, при открытии cmake проекта.

invy ★★★★★ ()
Ответ на: комментарий от invy

Я так делал. В результате QtCreator при открытии проекта снова запускает cmake (причем он показывает с какими параметрами, так что там все понятно) и этот запуск завершается с ошибкой (код возврата cmake = 1). Как я уже писал, я обошел это установкой CMAKE_C_COMPILER в настройках проекта.

chimera19 ()
Ответ на: комментарий от invy

Оттуда и CMAKE_CXX_COMPILER убрать надо.

Эти две переменные позволяют выбрать нужный комилятор

У QtCreator есть так называемые Kit'ы, это такие наборы компиляторов и других параметров, с которыми собирать проект (один kit для clang, например, другой для gcc). Так вот, когда ты выбираешь какой kit использовать, QtCreator должен как-то передать эту информацию cmake. Вот для этого он и использует CMAKE_CXX_COMPILER и CMAKE_C_COMPILER в командной строке при запуске cmake, причем их содержимое он берет из натроек kit'а. Я пытался у себя убрать передачу этих переменных при запуске cmake (там есть такой вот список, который можно настроить)

CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}

Но если их оттуда убрать, эти переменные все равно используются при запуске cmake (когда открываешь QtCreator, он запускает cmake, пишет с какими параметрами и какая получилась ошибка).

chimera19 ()
Ответ на: комментарий от chimera19

после того как загрузил проект, удали cmakecache, запусти в каталоге cmake с нормальными параметрами и забей накиты.

invy ★★★★★ ()
Ответ на: комментарий от invy

после того как загрузил проект, удали cmakecache, запусти в каталоге cmake с нормальными параметрами и забей

Суть в том, что проект не загружается, пока в кеше не появится правильное значение CMAKE_C_COMPILER (запуска cmake из QtCreator завершается с ошибкой и в результате список файлов проекта не показывается). И пока cmake, запущенный из QtCreator правильно не отработает, список файлов не появится (а это не произойдет без установки CMAKE_C_COMPILER в кеше, потому что сам QtCreator запускает cmake с неправильным значением -DCMAKE_C_COMPILER:STRING=""). Ну, а какими манипуляциями в кеш попадет нужное значение CMAKE_C_COMPILER, значения не имеет. Мне мой вариант больше нравится.

Кстати, можешь сам установить QtCreator (я брал из состава Qt https://download.qt.io/official_releases/online_installers/) и попробовать свой вариант.

chimera19 ()
Ответ на: комментарий от chimera19

И пока cmake, запущенный из QtCreator правильно не отработает

QtCreator запускает просто «cmake .» в каталоге сборки. Если ты предварительно запустил cmake с правильными ныжными тебе настройками, то в кэше уже будет всё что надо.

Кстати, можешь сам установить QtCreator

Я им на работе пользуюсь и у нас как раз тот случай, когда нельзя давать QtCreator'у всякую гадость делать. Потому таким «хаком» пользуюсь, а киты - в сад.

invy ★★★★★ ()
Ответ на: комментарий от invy

QtCreator запускает просто «cmake .» в каталоге сборки.

Если бы он так делал, то ошибка не появилась бы.

chimera19 ()

Настрой комплект в Qt Creator.

a1batross ★★★★★ ()
Ответ на: комментарий от Stil

Да, креаторы одной версии. Вся разница лишь в том, что на одном ноуте была чистая установка, а на втором раньше стоял чуть-чуть более старый qt. Наверно все дело в этом.

FliXis ()
Ответ на: комментарий от chimera19

Удалил build-Test_Project-Desktop_Qt_5_7_1_GCC_64bit-Debug и CMakeLists.txt.user.

Открыл проект в крео, опять прописал всякие там пути Debug/Release/MinSizeRel и т.п. - ошибка не возникла.

FliXis ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.