Ошибка 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

Ответ 1

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

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 выполняет кеширование с последней попытки), например, как подкаталог -D вашего исходного дерева

    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\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 в Windows. См. Cmake не может найти компилятор

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

Ответ 2

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

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

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

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

Enter image description here

Ответ 3

Я также испытал эту ошибку при работе с 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++.

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

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

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

После загрузки необходимых пакетов я мог видеть 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

Ответ 7

Для меня эта проблема исчезла в 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 нет.

Ответ 8

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

apt-get update
apt-get install build-essential

Ответ 9

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

Ответ 10

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

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

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

Ответ 11

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

Ответ 12

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

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

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

Как бы то ни было, после всех видов исправлений - как было написано на этих многочисленных forums-, я обнаружил, что это просто вопрос обеспечения того, чтобы содержимое переменной 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 не найден". ошибки.

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

Ответ 13

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

По-видимому, можно использовать генератор CMake Xcode (и другие) также в сочетании с 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>

Ответ 14

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

Ответ 15

У меня была такая же проблема с 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 у меня сработало.

Ответ 16

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

Ответ 17

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

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

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

Ответ 18

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

Desktop development with c++

Ответ 19

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

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

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

Визуальные C++ компиляторы и библиотеки для ARM "Не требуется"

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

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

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

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

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

Исчезнет.