@Mars36

Как настроить ninja под windows?

Пытаюсь собрать hello world с помощью ninja. Запускаю cmake -G Ninja .. после чего сразу появляется
ошибка
-- The CXX compiler identification is MSVC 19.28.29913.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - failed
-- Check for working CXX compiler: F:/microsoft/visual_studio/VC/Tools/MSVC/14.28.29910/bin/Hostx64/x64/cl.exe
-- Check for working CXX compiler: F:/microsoft/visual_studio/VC/Tools/MSVC/14.28.29910/bin/Hostx64/x64/cl.exe - broken
CMake Error at F:/tools/cmake/share/cmake-3.20/Modules/CMakeTestCXXCompiler.cmake:59 (message):
  The C++ compiler

    "F:/microsoft/visual_studio/VC/Tools/MSVC/14.28.29910/bin/Hostx64/x64/cl.exe"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: F:/code/C++/OOP/lab5/build/CMakeFiles/CMakeTmp

    Run Build Command(s):F:/tools/Qt/Tools/Ninja/ninja.exe cmTC_0aebd && [1/2] Building CXX object CMakeFiles\cmTC_0aebd.dir\testCXXCompiler.cxx.obj
    [2/2] Linking CXX executable cmTC_0aebd.exe
    FAILED: cmTC_0aebd.exe
    cmd.exe /C "cd . && F:\tools\cmake\bin\cmake.exe -E vs_link_exe --intdir=CMakeFiles\cmTC_0aebd.dir --rc=rc --mt=CMAKE_MT-NOTFOUND --manifests  -- F:\microsoft\visual_studio\VC\Tools\MSVC\14.28.29910\bin\Hostx64\x64\link.exe /nologo CMakeFiles\cmTC_0aebd.dir\testCXXCompiler.cxx.obj  /out:cmTC_0aebd.exe /implib:cmTC_0aebd.lib /pdb:cmTC_0aebd.pdb /version:0.0 /machine:x64  /debug /INCREMENTAL /subsystem:console  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."
    RC Pass 1: command "rc /fo CMakeFiles\cmTC_0aebd.dir/manifest.res CMakeFiles\cmTC_0aebd.dir/manifest.rc" failed (exit code 0) with the following output:
    The system cannot find the file specified
    ninja: build stopped: subcommand failed.

CMakeError.log

Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: F:/microsoft/visual_studio/VC/Tools/MSVC/14.28.29910/bin/Hostx64/x64/cl.exe 
Build flags: /DWIN32;/D_WINDOWS;/W3;/GR;/EHsc
Id flags:  

The output was:
2
Оптимизирующий компилятор Microsoft (R) C/C++ версии 19.28.29913 для x64
(C) Корпорация Майкрософт (Microsoft Corporation).  Все права защищены.

CMakeCXXCompilerId.cpp
Microsoft (R) Incremental Linker Version 14.28.29913.0
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:CMakeCXXCompilerId.exe 
CMakeCXXCompilerId.obj 
LINK : fatal error LNK1104: не удается открыть файл "LIBCMT.lib"


Detecting CXX compiler ABI info failed to compile with the following output:
Change Dir: F:/code/C++/OOP/lab5/build/CMakeFiles/CMakeTmp

Run Build Command(s):F:/tools/Qt/Tools/Ninja/ninja.exe cmTC_24677 && [1/2] Building CXX object CMakeFiles\cmTC_24677.dir\CMakeCXXCompilerABI.cpp.obj

Примечание: включение файла:  F:\tools\cmake\share\cmake-3.20\Modules\CMakeCompilerABI.h
[2/2] Linking CXX executable cmTC_24677.exe

FAILED: cmTC_24677.exe 

cmd.exe /C "cd . && F:\tools\cmake\bin\cmake.exe -E vs_link_exe --intdir=CMakeFiles\cmTC_24677.dir --rc=rc --mt=CMAKE_MT-NOTFOUND --manifests  -- F:\microsoft\visual_studio\VC\Tools\MSVC\14.28.29910\bin\Hostx64\x64\link.exe /nologo CMakeFiles\cmTC_24677.dir\CMakeCXXCompilerABI.cpp.obj  /out:cmTC_24677.exe /implib:cmTC_24677.lib /pdb:cmTC_24677.pdb /version:0.0 /machine:x64  /debug /INCREMENTAL /subsystem:console  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."

RC Pass 1: command "rc /fo CMakeFiles\cmTC_24677.dir/manifest.res CMakeFiles\cmTC_24677.dir/manifest.rc" failed (exit code 0) with the following output:
The system cannot find the file specified

ninja: build stopped: subcommand failed.


Гугл предлагает прилинковывать либу в cmake к проекту. Но это же не выход. С чужими проектами с гита на пример я же так не сделаю. Как я понял Ninja или cmake не может найти все нужное для компилятора. Прописал пути в path на что только можно, в том числе и на ненайденную либу из Error.log, но это не помогло. Каких то инструкций я то же найти не смог. В чем может быть причина?
  • Вопрос задан
  • 32 просмотра
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
При установке MSVS устанавливаются вместе с ним несколько батников, которые настраивают среду для сборки.
У меня в MSVS 2017 они называются "Native tools command promtp ...". В других версиях MSVS название может немного меняться. Батники находятся в меню Пуск в папке MSVS.
Запустите подходящий батник, он настроит среду сборки и запустит командную строку. Там и выполняйте сборку вашего проекта. При этом никаких ручных настроек не требуется.

PS: зря вы установили MSVS не в каталог по умолчанию - могут быть трудно диагностируемые проблемы при сборке из командной строки. Возможно вы как раз с этим и столкнулись.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы