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
Вот решение, которое сработало для меня:
- Откройте инструмент командной строки Visual Studio (от имени администратора)
- Перейдите туда, где у вас есть исполняемый файл CMake
- Запустите Cmake.exe
- Продолжайте как обычно, чтобы выбрать сборку и исходную папку
- Выберите соответствующий компилятор 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 из переменных среды.
Ответ 17
Это может быть другое решение для тех, кто имеет последнюю версию создателя Windows 10:
Сообщение Неустранимая ошибка LNK1104: не удается открыть файл 'gdi32.lib'
Ответ 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 должен найти его.