Эти сообщения об ошибках
CMake Error at ... (project):
No CMAKE_C_COMPILER could be found.
-- Configuring incomplete, errors occurred!
See also ".../CMakeFiles/CMakeOutput.log".
See also ".../CMakeFiles/CMakeError.log".
или
CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.
Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
...
-- Configuring incomplete, errors occurred!
просто означает, что CMake не смог найти ваш компилятор C / CXX для компиляции простой тестовой программы (одна из первых вещей, которые CMake пробует при обнаружении вашей среды сборки).
Действия по поиску проблемы зависят от среды сборки, которую вы хотите создать. Следующие руководства представляют собой сборник ответов здесь, на Stack Overflow, и некоторые из моих собственных опытов с CMake в Microsoft Windows 7/8/10 и Ubuntu 14.04.
Предварительные условия
- Вы установили компилятор / IDE, и он смог однажды скомпилировать любую другую программу (напрямую без CMake)
- У вас последняя версия CMake
- У вас есть права доступа к диску, на котором CMake должен сгенерировать среду сборки.
У вас есть чистый каталог сборки (потому что CMake кеширует вещи с последней попытки), например, как подкаталог вашего исходного дерева
Windows cmd.exe
> rmdir /s /q VS2015
> mkdir VS2015
> cd VS2015
Оболочка Bash
$ rm -rf MSYS
$ mkdir MSYS
$ cd MSYS
и убедитесь, что ваша командная оболочка указывает на ваш недавно созданный двоичный выходной каталог.
Общие вещи, которые вы можете / должны попробовать
Может ли CMake найти и запустить с любым / вашим компилятором по умолчанию? Беги без генератора
> cmake ..
-- Building for: Visual Studio 14 2015
...
Идеально, если он правильно определил генератор для использования - как здесь Visual Studio 14 2015
Что на самом деле не удалось?
В выходном каталоге предыдущей сборки просмотрите CMakeFiles\CMakeError.log
любые сообщения об ошибках, которые имеют для вас смысл, или попробуйте открыть / скомпилировать тестовый проект, созданный в CMakeFiles\[Version]\CompilerIdC
| CompilerIdCXX
непосредственно из командной строки (как указано в журнале ошибок).
CMake не может найти Visual Studio
Попробуйте выбрать правильную версию генератора :
> cmake --help
> cmake -G "Visual Studio 14 2015" ..
Если это не помогает, попробуйте сначала установить переменные среды Visual Studio (путь может отличаться):
> "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
> cmake ..
или используйте ярлык в Developer Command Prompt for VS2015
меню «Пуск» Windows в разделе All Programs
/ Visual Studio 2015
/ Visual Studio Tools
(спасибо @Antwane за подсказку).
Справочная информация : CMake поддерживает все выпуски и варианты Visual Studio (Express, Community, Professional, Premium, Test, Team, Enterprise, Ultimate и т. Д.). Чтобы определить местонахождение компилятора, он использует комбинацию поиска в реестре (например, в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir
), переменных системной среды и - если никто из других ничего не придумал - просто пытается вызвать компилятор.
CMake не может найти GCC (MinGW / MSys)
Вы запускаете bash
оболочку MSys msys.bat
и просто пытаетесь напрямую вызватьgcc
$ gcc
gcc.exe: fatal error: no input files
compilation terminated.
Здесь он нашел gcc
и жалуется, что я не дал ему никаких параметров для работы.
Итак, должно работать следующее:
$ cmake -G "MSYS Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
$ make
Если GCC не найден, вызовите export PATH=...
добавление пути к вашему компилятору (см. Как установить переменную среды PATH в сценарии CMake? ) И повторите попытку.
Если он по-прежнему не работает, попробуйте установить CXX
путь компилятора напрямую, экспортировав его (путь может отличаться)
$ export CC=/c/MinGW/bin/gcc.exe
$ export CXX=/c/MinGW/bin/g++.exe
$ cmake -G "MinGW Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
$ mingw32-make
Подробнее см. Как указать новый путь GCC для CMake.
Примечание : при использовании генератора "MinGW Makefiles" вы должны использовать mingw32-make
программу, поставляемую с MinGW.
Все еще не работает? Это странно. Убедитесь, что компилятор есть и у него есть права на исполнение (см. Также главу о предварительных условиях выше).
В противном случае последнее средство CMake - не пытаться самостоятельно выполнить поиск компилятора и установить внутренние переменные CMake напрямую с помощью
$ cmake -DCMAKE_C_COMPILER=/c/MinGW/bin/gcc.exe -DCMAKE_CXX_COMPILER=/c/MinGW/bin/g++.exe ..
Для получения дополнительной информации см. Cmake не соблюдает -D CMAKE_CXX_COMPILER = g ++ и компилятор настройки ошибок Cmake.
В качестве альтернативы эти переменные также могут быть установлены через cmake-gui.exe
Windows. См. Cmake не может найти компилятор
Предыстория : почти такая же, как и в Visual Studio. CMake поддерживает всевозможные разновидности GCC. Он ищет переменные среды (CC, CXX и т. Д.) Или просто пытается вызвать компилятор. Кроме того , он обнаружит какие - либо префиксы (при кросс-компиляции ) и пытается добавить его ко всем Binutils компилятора GNU (набора инструментов ar
, ranlib
, strip
, ld
, nm
, objdump
, и objcopy
).