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 FilesMicrosoft Visual Studio 14.0, и не смог его найти.



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

2113   21  

21 ответов:

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

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

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

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

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

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

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


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

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

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

Visaul C++ tools for CMake must be installed

для меня, я проверил и

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

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

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

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

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

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

теперь смотрите, какие генераторы доступны из с 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". ...

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

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

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

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

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

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

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

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

cd на путь CMakeLists.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

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

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

Если вы находитесь на Visual Studio 2017 вам нужно по крайней мере CMake 3.8!

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

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

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

-DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=

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

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

  • попробуйте установить путь вручную, установив флажок "дополнительно" и изменив CMAKE_LINKER и CMAKE_MAKE_PROGRAM
  • удалить кэш в CMake с GUI, посетите: Файл → Удалить Кэш.

моя проблема была комбинацией ранее заявленных: я установил версию компилятора на 15 вместо 14 и при исправлении мне пришлось удалить кэш.

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

тогда все работало так, как и должно было.

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

add_subdirectory(gtest_dir)

определяется как

PROJECT( projname CXX )

как-то, CMake не распознает

PROJECT(sub_project_name CXX C)

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

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

PROJECT( projname CXX C)

внутри .

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

сообщение переполнения стека неустранимая ошибка LNK1104: не удается открыть файл ' gdi32.lib'

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

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

У меня была эта проблема под 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, и теперь проблема исчезла.

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

Visual Studio 2017 Пакеты:

Visual Studio2017 Packages

кроме того, обновите CMake до последней версии.

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

Comments

    Ничего не найдено.