аргумент в этом случае.

емые коллеги по C ++,

после того, как я некоторое время использовал набор инструментов Visual Studio для сборки на окнах, я решил попробовать Clang 5.

Я установил двоичные файлы LLVM 5.0.0, среду сборки Ninja, VS 2017 Tools и CMake 3.9.3. Конечная цель состоит в том, чтобы иметь возможность компилировать приложения C и C ++ для Windows, используя VS Code с интеграцией CMake в качестве «IDE» и Clang с LLD в качестве компилятора и компоновщика.

Компиляция и выполнение простой программы работали отлично (скриншот соответствующей истории терминала). Clang автоматически обнаружил стандартную библиотеку для Windows в каталогах VS Tools и вывел исполняемый файл.

Следующим шагом была настройка простой сборки с помощью Ninja (скриншот файла ninja.build и истории терминала). Процесс сборки работал, как и ожидалось, и создал рабочий исполняемый файл, как и раньше.

Проблемы начались, когда я начал интегрировать CMake в процесс. Я ожидаю, что CMake создаст файл сборки ninja и запустит его, правильно? Я попробовал следующий файл CMakeLists

cmake_minimum_required(VERSION 3.9)

project(Test)

add_executable(Test main.c)

и называется CMake сcmake -G Ninja, Полученный результат был разочаровывающим, и я не понимаю достаточно, чтобы решить, соответственно, решить проблему самостоятельно.

-- The C compiler identification is Clang 5.0.0
-- The CXX compiler identification is Clang 5.0.0
-- Check for working C compiler: C:/Meine_Programme/LLVM/bin/clang.exe
-- Check for working C compiler: C:/Meine_Programme/LLVM/bin/clang.exe -- broken
CMake Error at C:/Meine_Programme/CMake/share/cmake-3.9/Modules/CMakeTestCCompiler.cmake:51 (message):
  The C compiler "C:/Meine_Programme/LLVM/bin/clang.exe" is not able to
  compile a simple test program.

  It fails with the following output:

   Change Dir: D:/Dateien/Downloads/Test/CMakeFiles/CMakeTmp



  Run Build Command:"C:/Meine_Programme/Ninja_Build/ninja.exe" "cmTC_eeb5c"

  [1/2] Building C object CMakeFiles\cmTC_eeb5c.dir\testCCompiler.c.obj

  FAILED: CMakeFiles/cmTC_eeb5c.dir/testCCompiler.c.obj 

  C:\Meine_Programme\LLVM\bin\clang.exe /nologo /DWIN32 /D_WINDOWS /W3 /MDd
  /Zi /Ob0 /Od /RTC1 /showIncludes
  /FoCMakeFiles\cmTC_eeb5c.dir\testCCompiler.c.obj
  /FdCMakeFiles\cmTC_eeb5c.dir\ -c testCCompiler.c

  clang.exe: error: no such file or directory: '/nologo'

  clang.exe: error: no such file or directory: '/DWIN32'

  clang.exe: error: no such file or directory: '/D_WINDOWS'

  clang.exe: error: no such file or directory: '/W3'

  clang.exe: error: no such file or directory: '/MDd'

  clang.exe: error: no such file or directory: '/Zi'

  clang.exe: error: no such file or directory: '/Ob0'

  clang.exe: error: no such file or directory: '/Od'

  clang.exe: error: no such file or directory: '/RTC1'

  clang.exe: error: no such file or directory: '/showIncludes'

  clang.exe: error: no such file or directory:
  '/FoCMakeFiles\cmTC_eeb5c.dir\testCCompiler.c.obj'

  clang.exe: error: no such file or directory:
  '/FdCMakeFiles\cmTC_eeb5c.dir\'

  ninja: build stopped: subcommand failed.





  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:3 (project)


-- Configuring incomplete, errors occurred!
See also "D:/Dateien/Downloads/Test/CMakeFiles/CMakeOutput.log".
See also "D:/Dateien/Downloads/Test/CMakeFiles/CMakeError.log".

Я предполагаю, что проблема связана с вызовом CMake clang с опциями стиля VS с использованием косой черты, а не с минусом, как требует clang.

Спасибо за помощь, ребята, я ценю это :-)

Просто оставьте мне комментарий, если вам нужна дополнительная информация.

Ответ на пост Флориан

Я попробовал команду Florians, но пропустил путь к ниндзя для более короткой записи, и оказалось, что он работает просто отлично.

cmake -E env LDFLAGS="-fuse-ld=lld"  cmake -H. -G Ninja -Bbuild -DCMAKE_C_COMPILER:PATH="C:\MeineProgramme\LLVM\bin\clang.exe" -DCMAKE_CXX_COMPILER:PATH="C:\MeineProgramme\LLVM\bin\clang++.exe" -DCMAKE_C_COMPILER_ID="Clang" -DCMAKE_CXX_COMPILER_ID="Clang" -DCMAKE_SYSTEM_NAME="Generic"

CMake создал файл сборки для ниндзя.

Я побежалninja all построить исполняемый файл какTest, Я переименовал его вTest.exe и программа выполнена счастливо. Пока что ... успехов !!! Но гораздо сложнее, чем я ожидал.

Ответы на вопрос(3)

Ваш ответ на вопрос