CMake не находит компилятор Visual С++

После установки Visual Studio 2015 и запуска CMake в предыдущем проекте CMake выдает сообщение об ошибке, утверждающее, что он не может найти компилятор C.

The C compiler identification is unknown
The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:4 (PROJECT):
  No CMAKE_C_COMPILER could be found.

CMake Error at CMakeLists.txt:4 (PROJECT):
  No CMAKE_CXX_COMPILER could be found.

Я пошел искать cl.exe в папке Visual Studio, C:\Program Files\Microsoft Visual Studio 14.0, и не смог найти его.

Как настроить CMake для работы в Windows с Visual Studio 2015?

Ответ 1

Я нашел решение. Хотя Visual Studio IDE успешно установлен, он не установил никаких инструментов сборки и, следовательно, не установил компилятор C++.

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

Ответ 2

Вот решение, которое сработало для меня:

  1. Откройте инструмент командной строки Visual Studio (от имени администратора)
  2. Перейдите туда, где у вас есть исполняемый файл CMake
  3. Запустите Cmake.exe
  4. Продолжайте как обычно, чтобы выбрать сборку и исходную папку
  5. Выберите соответствующий компилятор Visual Studio и нажмите кнопку настройки

Надеюсь, это должно работать без проблем.

Ответ 3

Я посмотрел в файле CMakeError.log и нашел ошибку о cannot run 'rc.exe'

Я искал и нашел этот ответ, чтобы скопировать RC.Exe и RcDll.Dll из буфера Microsoft SDKs в бункер VC, а затем работал с CMake.


Изменить: Верхний ответ на другой вопрос говорит о том, что это проблема PATH, поэтому этого может быть достаточно, чтобы убедиться, что bin SDK Microsoft находится в вашем PATH.

Ответ 4

Убедитесь, что вы используете правильную версию Visual Studio в генераторе. Я неправильно выбрал Visual Studio 15 при установке Visual Studio 14.

Ответ 5

Те, кто спотыкается об этом в Visual Studio 2017: есть функция, связанная с CMake, которую нужно выбрать и установить вместе с соответствующими наборами инструментов компилятора. Смотрите скриншот ниже.

Visaul C++ tools for CMake must be installed

Ответ 6

Если ни одно из вышеперечисленных решений не работает, остановитесь и выполните проверку работоспособности.

Я сгорел, используя неправильную строку -G <config>, и это дало мне эту ошибочную ошибку.

Сначала запустите из командной строки VS not обычную командную строку. Вы можете найти его в Start Menu -> Visual Studio 2015 -> MSBuild Command Prompt for VS2015 Это устанавливает все правильные пути к инструментам VS и т.д.

Теперь посмотрим, какие генераторы доступны из cmake...

cmake -help

...<snip>... The following generators are available on this platform: Visual Studio 15 [arch] = Generates Visual Studio 15 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files. Optional [arch] can be "Win64" or "IA64". ...

Затем выберите соответствующую строку с добавленным [arch].

mkdir _build cd _build cmake .. -G "Visual Studio 15 Win64"

Запуск cmake в подкаталоге упрощает выполнение "чистой", поскольку вы можете просто удалить все в этом каталоге.

Я обновился до Visual Studio 15, но не обращал внимания и пытался сгенерировать в 2012 году.

Ответ 7

Для меня я проверил файл CMakeError.log и нашел:

[...] ошибка MSB8036: Windows SDK версии 8.1 не найден. Установите требуемую версию Windows SDK или измените версию SDK на страницах свойств проекта или щелкнув правой кнопкой мыши решение и выбрав "Retarget solution".

Это несмотря на использование Visual Studio 2017 в Windows 7. Похоже, что CMake пытается создать свой проект обнаружения с помощью Windows 8.1 SDK.

Я использовал установщик Visual Studio, чтобы добавить этот компонент, и теперь CMake счастлив как моллюск.

Ответ 8

Меню → Visual Studio 2015 → MSBuild Командная строка для Visual Studio 2015. Затем CMake может найти cl.exe.

set PATH="c:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64\";%PATH%

Измените верхний путь к месту установки Windows SDK.

CMake может найти rc.exe.

Перейдите к пути CMakeLists.txt и выполните:

md .build
cd .build
cmake .. -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release
cmake --build .

Параметр после -G должен быть получен CMake. Используйте --help; вы можете иметь или не иметь генератор.

Ответ 9

Я столкнулся с той же проблемой и исправил ее, перезапустив установку Visual Studio и проверив следующую опцию:

Windows and Web Development/Universal Windows App Development Tools/Windows 10 SDK

Он содержит стандартные заголовки С++, используемые в большинстве приложений, поэтому часто необходимо установить его также.

Ответ 10

В качестве альтернативы принятому ответу вы можете установить С++ непосредственно как описано здесь.

Ответ 11

Если вы на Visual Studio 2017, вам нужно хотя бы CMake 3.8!

Ответ 12

У меня была эта проблема под Windows 10 при использовании Visual Studio 2015 Professional, в то время как Visual Studio 2015 Express работает! Под Windows 7 обе версии Visual Studio работали.

Новые проекты, созданные в Visual Studio 2015 Professional IDE, успешно компилируются, но CMake не может найти отчет компилятора:

The C compiler identification is unknown
The CXX compiler identification is unknown

Я обновил CMake с 3.4.1 до 3.11.4, и теперь проблема исчезла.

Ответ 13

В моем случае я увидел в CMakeError.log что CMake не смог найти Windows SDK (MSB8003: Could not find WindowsSDKDir variable from the registry).

Версия может быть указана в командной строке при первом запуске CMake с помощью:

-DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=

Я получил дальнейшие действия после установки этого, но позже я обнаружил больше проблем (поэтому я предполагаю, что моя среда как-то испорчена), но, возможно, это поможет кому-то решить эту проблему.

Ответ 14

Пара советов:

  • Попробуйте установить путь вручную, проверив 'advanced' и изменив CMAKE_LINKER и CMAKE_MAKE_PROGRAM
  • Удалить кеш - в CMake с графическим интерфейсом перейдите по ссылке: Файл → Удалить кеш.

Моя проблема была в сочетании с ранее заявленным: я установил версию компилятора на 15 вместо 14, и после исправления мне пришлось удалить кеш.

Я также запустил командную строку Visual Studio от имени администратора и оттуда запустил cmake-gui.exe

Тогда все заработало как положено.

Ответ 15

В моем случае проблема заключалась в том, что родительский проект, который включает googletest через

add_subdirectory(gtest_dir)

был определен как

PROJECT( projname CXX )

Почему-то CMake не распознает

PROJECT(sub_project_name CXX C)

поскольку компилятор C не установлен в родительском.

Я решил проблему с помощью

PROJECT( projname CXX C)

в моем основном файле CMakeLists.txt.

Ответ 16

В моем случае был установлен набор переменных среды, который стал причиной этой ошибки. Проблема была решена после удаления cxx_flags из переменных среды.

Ответ 18

Ни одно из предыдущих решений не помогло мне. Однако я заметил, что хотя я установил Visual Studio версии 15 (не путать с Visual Studio 2015), каталог, созданный на моем компьютере, был предназначен для Visual Studio 14.

Когда я указал Visual Studio 14, когда я нажал кнопку конфигурации, это сработало.

Ответ 19

У меня была похожая проблема с проектом Visual Studio 2017, созданным через CMake. Некоторые из пакетов отсутствовали при установке Visual Studio в настольную разработку с C++. Смотрите снимок:

Пакеты Visual Studio 2017:

Visual Studio2017 Packages

Также обновите CMake до последней версии.

Ответ 20

Я получил эту проблему с CMake 3.12.1, после обновления Visual Studio 2017. Я просто перезапустил CMake, и он заработал.

Ответ 21

я нашел это решение в stackoverflow, и я работаю для меня, хотя не работаю с другими решениями, если у вас ОС Windows 10, выполнение следующих шагов решит проблему:

1) Перейдите в C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin

2) затем скопируйте RC.exe и RcDll из этого файла

3) перейдите в C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin и вставьте в него два файла, которые вы скопировали.

это все, что я надеюсь, это полезно...

Ответ 22

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

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

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 не может быть найден.

Если выше, не решит вашу проблему?

При желании вы можете удалить опции C и CXX в cmakelists.txt, установив # infront из того, где находится enable_language (C). И избегайте компиляции процессора Android ARM.

Ответ 23

Решено путем добавления отсутствующего компонента Modify-> продолжить добавление, как следует Fix

Ответ 24

У меня была связанная проблема: генераторы Visual C++ даже не были в списке при запуске cmake --help.

Я запустил в консоли файл where cmake и обнаружил, что cygwin также предоставляет собственный файл cmake.exe, который использовался. Изменение порядка каталогов в PATH устранило проблему.

Ответ 25

Проверка CMakeErrors.log в CMakeFiles вернула:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Platforms\x64\PlatformToolsets\v140_xp\Toolset.targets(36,5): предупреждение MSB8003: не удалось найти переменную WindowsSdkDir_71A из реестра. Для TargetFrameworkVersion или PlatformToolset может быть задан неверный номер версии.

Ошибка означает, что инструменты сборки для XP (v140_xp) не установлены. Чтобы исправить это, я установил соответствующую функцию в установщике Visual Studio 2019 на вкладке "Отдельные компоненты":

enter image description here

Ответ 26

У меня была эта проблема с CMake GUI и VS 21019 Community Edition. Я думаю, что я мог установить CMake до Visual Studio - конечно, после того, как я обновил CMake 3.15.2 до 3.15.3, проблема ушла.

Ответ 27

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