Ці повідомлення про помилки
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
Шкаралупа Баша
$ 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
).