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

После установки 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?

Я нашел решение. Хотя Visual Studio IDE успешно установлена, он не устанавливал никаких средств сборки и, следовательно, не устанавливал компилятор C ++. При попытке вручную создать проект C ++ в графическом интерфейсе Visual Studio 2015 я смог запросить его для загрузки пакетов C ++. Тогда Cmake смог найти компилятор без каких-либо затруднений.

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

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

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

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


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

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

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

Инструменты Visaul C ++ для CMake должны быть установлены

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

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

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

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

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

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

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

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

cmake -help

...... 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 год.

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

set PATH = “c: \ Program Files (x86) \ Windows Kits \ 10 \ bin \ 10.0.16299.0 \ x64 \”;% PATH% изменить верхний путь к месту установки Windows sdk

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

cd на путь cmakelist.txt

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

Параметр после -G должен выбираться cmake -help; вы можете или не иметь генератор

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

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

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

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

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

Версия может быть указана в командной строке при первом запуске cmake, используя:

 -DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION= 

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

Несколько советов:

-Попробуйте установить путь вручную, проверив «расширенный» и изменив CMAKE_LINKER и CMAKE_MAKE_PROGRAM -Удалить кеш – в CMake с Gui перейдите в: File -> Delete Cache.

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

Я также запустил командную строку VS в качестве администратора, и оттуда я запустил cmake-gui.exe

Тогда все работало так, как предполагалось.

В моем случае проблема заключалась в том, что родительский проект, включающий googletest через add_subdirectory(gtest_dir) каким-то образом был определен как PROJECT( projname CXX ) , cmake не распознает PROJECT(sub_project_name CXX C) поскольку компилятор C не установлен в родитель. Я решил проблему, используя PROJECT( projname CXX C) в моем основном файле CMakeLists.txt

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

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

Это может быть другое решение для тех, кто имеет последнюю версию для Windows 10:

https://stackoverflow.com/a/43456623/5925642

Ни один из вышеперечисленных решений не работал для меня. Однако я заметил, что, хотя я установил визуальную студию 15, каталог, созданный на моем компьютере, был для visual studio 14. Когда я указал визуальную студию 14, когда я нажал кнопку конфигурации, она работала. Я попытался опубликовать выше, подписавшись на facebook, но получил сообщение, что это невозможно сделать, потому что запрос выглядел подозрительным.

Если эта проблема возникла под Win10 при использовании VS 2015 Professional, в то время как VS 2015 Express работал! В Win7 работала версия VS.

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

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

Обновлен CMake с 3.4.1 до 3.11.4. Проблема исчезла .

У меня была аналогичная проблема с проектом VS2017, созданным через cmake. Некоторые пакеты отсутствовали при установке визуальной студии в Desktop development с C ++. См. Снимок:

VS 2017 Пакеты:

Пакеты VS 2017

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

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

Поскольку Cmake не может найти ваш визуальный компилятор Studio, запустите любой проект, который будет загружать требуемые компиляторы, и Cmake должен уметь его финализировать.

  • Выделение синтаксиса Visual Studio 2015 JSX / ES2015
  • Visual Studio 2015 не выделяет синтаксис бритвой или Intellisense
  • Установщик Visual Studio 2015 зависает во время установки?
  • Как повысить производительность версии 1.58.0 с помощью Visual Studio 2015 (Enterprise)
  • ASP.NET 5 добавить ссылку службы WCF
  • C # 6.0 TFS Builds
  • Функции C # 6.0, не работающие с Visual Studio 2015
  • Visual Studio 2015 или 2017 не обнаруживает модульные тесты
  • Ошибка отладки! Выражение: __acrt_first_block == header
  • vcvarsall.bat, необходимый для компиляции python из visual studio 2015 (v 14)
  • Как разработать Windows 10 uwp на реальном устройстве (мобильном)?
  • Interesting Posts

    Как отключить службу индексирования поиска Windows при работе от аккумулятора в Windows 7?

    Почему HibernateTemplate не рекомендуется?

    google maps v3 стандартные значки / тени (эквивалент G_DEFAULT_ICON в v2)

    создать надежный самоподписанный SSL-сертификат для localhost (для использования с Express / Node)

    android-sdks / build-tools / 17.0.0 / aapt: ошибка при загрузке разделяемых библиотек: libz.so.1: невозможно открыть файл общих объектов: нет такого файла или каталога

    Восстановить раздел после переустановки Windows XP

    Установка и получение переменных окружения Windows из командной строки?

    Какова самая частая проблема параллелизма, с которой вы столкнулись в Java?

    Sitecopy настаивает на ~ / .netrc с 600 правами, но мой ~ / находится в разделе NTFS

    Как стилизовать DrawerArrowToggle из библиотеки Android appcompat v7 21

    Предотrotation / ловушка “Ошибка IllegalArgumentException: параметр должен быть streamом этого представления”

    Два интернет-соединения, одна локальная сеть – как поделиться?

    Chmod 777: как сделать все файлы «RWX»

    Как создать документ Word с помощью Apache POI?

    Multi-boot: Windows 10 не может видеть один диск ntfs

    Давайте будем гением компьютера.