it-roy-ru.com

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

79
Caio Fontes

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

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
    

    Bash Shell

    $ rm -rf MSYS
    $ mkdir MSYS
    $ cd MSYS
    

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

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

  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

    Примечание : при использовании генератора "MakeGiles MinGW" необходимо использовать программу 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).

79
Florian

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

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

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

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

Enter image description here

15
Wim Vanhenden

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

12
Natalie Cottrill

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

Sudo apt-get update && Sudo apt-get install build-essential
10
Vishnu

Я столкнулся с этой проблемой при сборке 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
4
Aksh1801

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

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

4
TSac

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

4
spenceryue

Это работает для меня в buntu 17.1 (Хитрый Аардварк):

apt-get update
apt-get install build-essential
3
purval_patel

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

2
Aryaman Gupta

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

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

Простая проблема здесь в том, что компилятор VC++ (i.e cl.exe и его зависимые библиотеки DLL) не виден CMake. Просто. Сделав папки VC++, содержащие эти двоичные файлы, видимыми для CMake и вашей рабочей команды Prompt (если вы запускаете 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

b) и кроме того, папка, содержащая зависимый 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 не найден". ошибки.

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

1
GreatCentralSun

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

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

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

1
Meir Gerenstadt

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

1
daniel rubambura

Я получаю именно то сообщение об ошибке, если ccache включено, при использовании генератор XCake 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>
1
normanius

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

0
helmken

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

0
TripleS

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

0
Marc Dirven

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

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

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

0
Aprajita Verma

Загляните в 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.

0
Dealazer

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

Desktop development with c++

0
Asad