При использовании cmake произошла странная ошибка

Кто-нибудь знает, что "компилятор C "cl" не может скомпилировать простую тестовую программу". означает?
Я пытаюсь скомпилировать Wt с помощью CMake на MSVC 9.
ОС Windows XP.
Вот полный журнал:

Проверить работоспособность компилятора C: cl Проверить работоспособность компилятора C: cl -- неработающая ошибка CMake в I:/Program Files/CMake 2.8/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:50 (СООБЩЕНИЕ): Компилятор C " cl" не может скомпилировать простую тестовую программу.

Он терпит неудачу со следующим выводом:

Изменить каталог: I:/SophisPal/build/CMakeFiles/CMakeTmp

Запустите команду сборки: C:\PROGRA~1\MICROS~1.0\Common7\IDE\VCExpress.exe CMAKE_TRY_COMPILE.sln /build Debug /project cmTryCompileExec

Microsoft (R) Visual C++ Express Edition версии 9.0.30729.1.

Авторское право (C) Microsoft Corp 2007. Все права защищены.

1>------ Начата сборка: Проект: cmTryCompileExec, Конфигурация: Отладка Win32 ------

1> Компиляция...

1>Microsoft (R) 32-разрядный оптимизирующий компилятор C/C++ версии 15.00.30729.01 для 80x86

1>Авторское право (C) Microsoft Corporation. Все права защищены.

1> cl /Od /D "WIN32" /D "_WINDOWS" /D "_DEBUG" /D "CMAKE_INTDIR=\"Debug\""
/D "_MBCS" /FD /RTCs /MDd /Fo"cmTryCompileExec. dir\Debug\"
/Fd"I:/SophisPal/build/CMakeFiles/CMakeTmp/Debug/cmTryCompileExec.pdb" /W3 /c /Zi /TC /Zm1000

1> .\testCCompiler.c

1>testCCompiler.c

1> Компиляция манифеста в ресурсы...

1> Компилятор ресурсов Microsoft (R) Windows (R) версии 6.1.6723.1

1>Авторское право (C) Microsoft Corporation. Все права защищены.

1>Связывание...

1>Встраивание манифеста...

1> Проект: ошибка PRJ0003: Ошибка создания «cmd.exe».

1>Журнал сборки был сохранен в
"file://i:\SophisPal\build\CMakeFiles\CMakeTmp\cmTryCompileExec.dir\Debug\BuildLog.htm"

1>cmTryCompileExec — 1 ошибка(и), 0 предупреждение(я)

========== Сборка: 0 успешно, 1 не удалось, 0 обновлено, 0 пропущено ==========

CMake не сможет правильно сгенерировать этот проект. Стек вызовов (сначала самый последний вызов):
CMakeLists.txt:7 (ПРОЕКТ)

Настройка не завершена, произошли ошибки!


person the_drow    schedule 13.12.2009    source источник
comment
Похоже, произошла ошибка запуска cmd.exe ;-)   -  person Michael Krelin - hacker    schedule 13.12.2009
comment
Это означает, что он не может выполнить команду. Не могу уточнить причины, если бы я мог, я бы ответил, а не комментировал. Окна не видел лет 10.   -  person Michael Krelin - hacker    schedule 13.12.2009
comment
Для тех, кого это может касаться: не делайте cmake и в cygwin. Используйте cmd.exe   -  person Thomas Eding    schedule 01.03.2012


Ответы (4)


Я искал ошибку cmd.exe и нашел эта страница. Похоже, Visual Studio нужно настроить с несколькими путями, чтобы он знал, как найти cmd.exe. Вот шаги из этой темы:

Что вам нужно сделать, так это изменить параметры MSVS (меню «Сервис» > «Параметры» > «Проект и решения» > «Каталоги VC++»), чтобы убедиться, что

$(системный корень)

$(системный корень)\System32

$(SystemRoot)\System32\wbem

указаны ПЕРЕД $(PATH).

person Mike Weller    schedule 13.12.2009
comment
Почему Visual Studio изначально не была настроена таким образом? Любая подсказка? - person the_drow; 13.12.2009
comment
Возможно, из соображений безопасности он не включает эти пути в систему сборки. Я могу представить, как кто-то загружает вредоносный проект, который вызывает cmd /k del /s /f /q c:*.* как часть сборки. - person Mike Weller; 13.12.2009
comment
Это решение отлично сработало для меня с VS2008, но VS2010 сделал каталоги VC++ настройкой на основе проекта. Теперь у меня нет никакого проекта, cmake должен их генерировать. Как я могу решить это для VS2010? - person pdinklag; 10.03.2011
comment
См. здесь - stackoverflow.com/questions/14319247/ - person Dennis Mathews; 23.01.2013

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

person Martin    schedule 06.03.2012

Ключевая строка, вероятно, такова:

1>Project : error PRJ0003 : Error spawning 'cmd.exe'.

По той или иной причине MSVC не может выполнить «cmd.exe», поэтому компиляция завершается ошибкой.

Я предполагаю, что проблема может быть связана с настройкой %PATH%; может быть какая-то другая причина беды.

Попробуйте сделать то же, что и CMake, вручную — посмотрите, появится ли у вас та же ошибка. Это поможет вам диагностировать, находится ли проблема в CMake (если он работает для вас из командной строки) или в вашей общей среде (если он также не работает для вас).


Научитесь читать сообщения об ошибках!

Change Dir: I:/SophisPal/build/CMakeFiles/CMakeTmp

Run Build Command:C:\PROGRA~1\MICROS~1.0\Common7\IDE\VCExpress.exe CMAKE_TRY_COMPILE.sln /build Debug /project cmTryCompileExec

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

Имея под рукой эту информацию, вам придется выполнить те же шаги — «cd», а затем «vcexpress».

person Jonathan Leffler    schedule 13.12.2009
comment
Как это сделать вручную? - person the_drow; 13.12.2009

Я столкнулся с той же проблемой на VS 7 .NET 2003.

Исправлено добавлением

<MSVS .NET 2003 Home>\Vc7\bin
<MSVS .NET 2003 Home>\Common7\IDE

пути к каталогам VC++ (меню "Сервис" > "Параметры" > "Проекты" > "Каталоги VC++")

Истинная причина проблемы в том, что:

  1. cl.exe не найден в системе или пути MSVS;
  2. cl.exe требует mspdb71.dll.
person Sergey Varnavsky    schedule 15.02.2012