Ошибка CMake в CMakeLists.txt:30 (проект): не найден файл CMAKE_C_COMPILER

Я пытаюсь создать решение Visual Studio с CMake для компиляции последней версии aseprite, и CMake продолжает давать мне:

No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.

Я уже скачал GCC, и я использую Visual Studio 2015.

Я следую этому уроку:

https://github.com/aseprite/aseprite/blob/master/INSTALL.md

23 ответа

Решение

Эти сообщения об ошибках

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 пытается найти при обнаружении среды сборки).

Действия по поиску вашей проблемы зависят от среды сборки, которую вы хотите сгенерировать. Следующие руководства представляют собой набор ответов здесь о переполнении стека и некоторые из моих собственных опытов с 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
    

    и убедитесь, что ваша командная оболочка указывает на ваш недавно созданный двоичный каталог вывода.

Общие вещи, которые вы можете / должны попробовать

  1. Может ли CMake найти и запустить с любым / вашим компилятором по умолчанию? Беги без генератора

    > cmake ..
    -- Building for: Visual Studio 14 2015
    ...
    

    Идеально, если он правильно определил генератор для использования - как здесь Visual Studio 14 2015

  2. Что же на самом деле не удалось?

    В выходной директории предыдущей сборки посмотрите на CMakeFiles\CMakeError.log для любого сообщения об ошибке, которое имеет смысл для вас, или попробуйте открыть / скомпилировать тестовый проект, сгенерированный в CMakeFiles\[Version]\CompilerIdC|CompilerIdCXX непосредственно из командной строки (как указано в журнале ошибок).

CMake не может найти Visual Studio

  1. Попробуйте выбрать правильную версию генератора:

    > cmake --help
    > cmake -G "Visual Studio 14 2015" ..
    
  2. Если это не помогает, попробуйте сначала установить переменные среды 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)

  1. Вы начинаете MSys bash оболочка с 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?) и попробуйте снова.

  2. Если это все еще не работает, попробуйте установить 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

  3. До сих пор не работает? Это странно. Пожалуйста, убедитесь, что компилятор есть и имеет права на выполнение (см. Также главу "Предварительные условия" выше).

    В противном случае последнее средство 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 на винде. См. Cmake не может найти компилятор

Фон: почти так же, как с Visual Studio. CMake поддерживает все виды GCC. Он ищет переменные окружения (CC, CXX и т. Д.) Или просто пытается вызвать компилятор. Кроме того, он обнаружит любые префиксы (при кросс-компиляции) и попытается добавить его во все binutils из цепочки инструментов компилятора GNU (ar, ranlib, strip, ld, nm, objdump, а также objcopy).

Для Ubuntu, пожалуйста, установите следующие вещи:

sudo apt-get update && sudo apt-get install build-essential

Это случилось со мной после того, как я установил Visual Studio 15 2017.

Компилятор C++ для Visual Studio 14 2015 не был проблемой. Казалось, проблема с Windows 10 SDK.

Добавление Windows 10 SDK в Visual Studio 14 2015 решило проблему для меня.

Смотрите прикрепленный скриншот.

Это работает для меня в Ubuntu 17.10 (хитрый Aardvark):

apt-get update
apt-get install build-essential

Я также испытал эту ошибку при работе с CMake:

No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.

Поле "Предупреждение" в статье о библиотеке MSDN Visual C++ в Visual Studio 2015 помогло мне получить необходимую помощь.

Visual Studio 2015 не поставляется с C++, установленным по умолчанию. Итак, создание нового проекта C++ предложит вам загрузить необходимые компоненты C++.

Я столкнулся с этой проблемой при сборке libgit2-0.23.4. Для меня проблема была в том, что компилятор C++ и связанные с ним пакеты не были установлены с VS2015, поэтому файл "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" отсутствовал, и Cmake не смог найти компилятор.

Я попытался вручную создать проект C++ в графическом интерфейсе Visual Studio 2015 (C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ devenv.exe), и при создании проекта я получил приглашение загрузить C++ и связанные пакеты.

После загрузки необходимых пакетов я увидел, что vcvarsall.bat & Cmake смог найти компилятор и успешно выполнил следующий журнал:

C:\Users\aksmahaj\Documents\MyLab\fritzing\libgit2\build64>cmake ..
-- Building for: Visual Studio 14 2015
-- The C compiler identification is MSVC 19.0.24210.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual        
Studio 14.0/VC/bin/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual  
Studio 14.0/VC/bin/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE)
-- Could NOT find ZLIB (missing:  ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
-- zlib was not found; using bundled 3rd-party sources.
-- LIBSSH2 not found. Set CMAKE_PREFIX_PATH if it is installed outside of 
the default search path.
-- Looking for futimens
-- Looking for futimens - not found
-- Looking for qsort_r
-- Looking for qsort_r - not found
-- Looking for qsort_s
-- Looking for qsort_s - found
-- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - not found
-- Found PythonInterp: C:/csvn/Python25/python.exe (found version "2.7.1")
-- Configuring done
-- Generating done
-- Build files have been written to:    
C:/Users/aksmahaj/Documents/MyLab/fritzing/libgit2/build64

У меня были такие же ошибки с CMake. В моем случае я использовал неправильную версию Visual Studio в начальном диалоге CMake, где мы должны выбрать компилятор Visual Studio.

Затем я изменил его на "Visual Studio 11 2012", и все заработало. (У меня на компьютере установлена ​​версия Visual Studio Ultimate 2012). В общем, попробуйте ввести более старую версию Visual Studio в диалоговом окне начальной настройки CMake.

Для меня эта проблема исчезла в Windows, когда я переместил свой проект в более мелкий родительский каталог, то есть в:

C:\Users\spenc\Desktop\MyProjectDirectory

вместо

C:\Users\spenc\Desktop\...\MyProjectDirectory,

Я думаю, что источником проблемы было то, что MSBuild имеет ограничение длины пути файла до 260 символов. Это приводит к тому, что базовый тест компилятора, который выполняет CMake, создает проект под названием CompilerIdCXX.vcxproj потерпеть неудачу с ошибкой:

C1083: Cannot open source file: 'CMakeCXXCompilerId.cpp'

потому что длина пути файла, например

C:\Users\spenc\Desktop\...\MyProjectDirectory\build\CMakeFiles\...\CMakeCXXCompilerId.cpp

превышает ограничение MAX_PATH.

Затем CMake заключает, что компилятора CXX нет.

Попробовав все решения безуспешно, я просто предоставил недостающий параметр с помощью cmake -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ ...

Убедитесь, что вы выбрали правильную версию Visual Studio. Это сложнее, чем кажется, потому что Visual Studio 2015 на самом деле является Visual Studio 14, и аналогично Visual Studio 2012 - это Visual Studio 11. Я неправильно выбрал Visual Studio 15, то есть фактически Visual Studio 2017, когда установил 2015.

На всякий случай это поможет любому, как я, в будущем:

У меня была эта проблема в течение 24 часов, на 3 разных 64-битных машинах (Win7, Windows 8.1 VM и ноутбук WIn 8.1) - при попытке собрать WebKit с VS 2017.

Простая проблема заключается в том, что компилятор VC++ (т.е. cl.exe и его зависимые библиотеки DLL) не виден CMake. Просто. Сделав папки VC++, содержащие эти двоичные файлы, видимыми для CMake и вашей рабочей командной строки (если вы запускаете Cmake из командной строки), вуаля! (В дополнение к ключевым вопросам, поднятым другими, выше)

Как бы то ни было, после всех видов исправлений - как было опубликовано на этих многочисленных форумах - я обнаружил, что это просто вопрос обеспечения того, чтобы содержимое переменной PATH не загромождалось несколькими путями Visual Studio BIN и т. Д.; и вместо этого указывает на:

a) местоположение вашего компилятора (т.е. cl.exe для вашей предпочтительной версии Visual Studio), которое в моем случае (для 64-битной платформы и разработки на 64-битном хосте): C:\Program Files (x86)) \Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\Hostx64\x64

б) и кроме того, папка, содержащая зависимую DLL-библиотеку (от которой зависит cl.exe):api-ms-win-crt-runtime-l1-1-0.dll - которая на моей машине:

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ Remote Debugger \ x64

Эти два каталога были добавлены в упрощенную и переменную системного пути CUSTOM (работающую под приглашением с привилегированными правами администратора), что исключило мои слова "CMAKE_C_COMPILER не найден" и "CMAKE_CXX_COMPILER не найден". ошибки.

Надеюсь, это поможет кому-то.

Убедитесь, что вы установили Windows SDK при установке Visual Studio. Чтобы добавить Windows SDK, вы можете перейти в Visual Studio Installer и нажать «Изменить», а затем установить флажок Windows SDK и установить его.

Вы также можете убедиться, что вы - пользователь sudo, и у вас есть доступ READ/WRITE к каталогу, с которым вы работаете. У меня была похожая проблема на OS X, и я исправил ее, просто войдя в режим sudo.

Я получаю именно то сообщение об ошибке, если ccache включен, при использовании генератора Xcode CMake. Отключение ccache решило проблему для меня. Ниже я представляю исправление / проверку, которая работает для MacOS, но должна работать аналогично на других платформах.

По-видимому, можно использовать генератор Xcode CMake (и другие) также в сочетании с ccache, как описано здесь. Но я никогда не пробовал это сам.

# 1) To check if ccache is enabled:
echo $CC
echo $CXX
# This prints something like the following: 
#     ccache clang -Qunused-arguments -fcolor-diagnostics. 
# CC or CXX are typically set in the `.bashrc` or `.zshrc` file.

# 2) To disable ccache, use the following:
CC=clang
CXX=clang++

# 3) Then regenerate the cmake project
cmake -G Xcode <path/to/CMakeLists.txt>

Ни одно из решений здесь не решает мою проблему - только когда я устанавливаю Центр обновления Windows для универсальной среды выполнения C.

Теперь CMake работает, и ссылка больше не зависает от Visual Studio.

Обновление для Universal C Runtime в Windows

Я знаю, что этот вопрос касается Visual Studio 2015. Я столкнулся с этой проблемой в Visual Studio 2017. При поиске в Google я попал на эту страницу. Посмотрев первые 2,3 ответа, я понял, что это проблема с установкой vC++. Установка рабочей нагрузки "Разработка рабочего стола с C++" решила проблему.

Я обновил Visual Studio 2015 с обновлением 2 до Visual Studio 2015 с обновлением 3, и это решило мою проблему.

У меня такая же проблема.

Я пытался установить Dlib на моей машине, и это дало мне эту ошибку. Упомянутый в вопросе учебник приводит к загрузке Visual Studio 2017. Я решил эту проблему, удалив VS 2017 и установив VS 2015

Можно установить VS 2015 через этот поток stackru: Как загрузить Visual Studio Community Edition 2015 (не 2017)

У меня была такая же проблема с cmake-gui (No CMAKE_CXX_COMPILER could be found.), при запуске CMake из командной строки работал нормально. После добавления записей вручную

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin

к переменной окружения PATH у меня сработало.

Недавно у меня возникла эта проблема в MacOS. Попробовав каждое решение, которое я нашел, и ни одно из них на самом деле не заставило Anaconda найти CMake или vscode, способные его обнаружить, я обнаружил, что самый простой способ (если вы работаете с Anaconda или мини-conda) - открыть Anaconda Navigator -> Go в Среды -> Выберите базовую (корневую) среду -> выберите неустановленные пакеты -> найдите CMake -> установите вручную связанные пакеты.

На разных форумах я обнаружил, что эту проблему можно решить (в MacOS), установив другие версии vscode или anaconda. Но, безусловно, это самый простой способ, который мне помог. В значительной степени решение возвращается к основам.

Надеюсь, это кому-то поможет!

Для меня это работало, чтобы использовать командную строку разработчика, которая поставляется с Visual Studio, а затем просто cd в your/jcef/dir и беги cmake -G "Visual Studio 14 Win64" ..

На M1 Mac добавьте следующую конфигурацию, чтобы исправить это для меня

       -DCMAKE_C_COMPILER="${OTHER_CXX_FLAG}" -DCMAKE_C_COMPILER="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -DCMAKE_CXX_COMPILER="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"

Результат конфигурации:

         cmake ../build -DCMAKE_C_COMPILER="${OTHER_CXX_FLAG}" -DCMAKE_C_COMPILER="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -DCMAKE_CXX_COMPILER="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++" -DCMAKE_SYSTEM_NAME=Darwin -DCMAKE_TARGET_SYSTEM=mac -GXcode

Посмотрите в Cmakelists.txt, если вы найдете ARM, вам нужно установить C++ для ARM

Это эти пакеты:

C++ Универсальная платформа Windows для ARM64 "Не требуется"

Компиляторы и библиотеки Visual C++ для ARM "Не требуется"

Компиляторы и библиотеки Visual C++ для ARM64 "Очень вероятно, требуется"

Required for finding Threads on ARM 
enable_language(C) 
enable_language(CXX)

Тогда проблемы

CMAKE_C_COMPILER не может быть найден.

CMAKE_CXX_COMPILER не может быть найден.

Может исчезнуть, если вы не укажете c компилятор, такой как clang, и, возможно, установка clang будет работать в другую пользу.

Вы можете при желании удалить в cmakelists.txt оба с # перед enable_language, если вы не компилируете для ARM.

Другие вопросы по тегам