CMake 编译在 MSYS2 上失败

CMake compilation failing on MSYS2

我正在尝试为我正在处理的项目设置 CMake,我首先尝试用 C 语言编译一个简单的 Hello World 程序。我正在使用 Windows 10 和 MSYS2 .如果我直接在 Bash 中调用编译器 (GCC),它会在没有警告或错误的情况下正常编译,并给出一个可执行文件作为输出,完全按预期打印 "Hello, world!"。当我尝试使用 CMake 编译我的项目时,我的问题就来了。当我 运行 cmake -G Ninja .. 编译我的项目时,它抛出这个错误:

CMake Error at C:/msys64/mingw64/share/cmake-3.15/Modules/CMakeTestCCompiler.cmake:60 (message):
  The C compiler

    "C:/msys64/mingw64/bin/cc.exe"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: C:/Users/dylanweber/Documents/C-Projects/webapp/build/CMakeFiles/CMakeTmp

    Run Build Command(s):C:/msys64/usr/bin/ninja.exe cmTC_45340 && [1/2] Building C object CMakeFiles/cmTC_45340.dir/testCCompiler.c.obj
    FAILED: CMakeFiles/cmTC_45340.dir/testCCompiler.c.obj
    C:\msys64\mingw64\bin\cc.exe    -o CMakeFiles/cmTC_45340.dir/testCCompiler.c.obj   -c testCCompiler.c
    /bin/sh: C:msys64mingw64bincc.exe: command not found
    ninja: build stopped: subcommand failed.

注意它是如何提到 C:msys64mingw64bingcc.exe...肯定存在某种路径描述问题,但我已尝试将 CC 环境变量设置为 C:\msys64\mingw64\bin\gcc.exeC:/msys64/mingw64/bin/gcc.exe.我一直在 运行 秒之间清除 CMake 缓存。

这是我的 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 3.15)

project(webapp)

set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/build)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR})

file(GLOB SOURCES "main/*.c")

add_executable(webapp ${SOURCES})

我的代码位于 "main" 文件夹中,该文件夹目前只有一个 "main.c" 文件,此外还有一个用于保存所有临时文件的构建目录。最令人沮丧的部分是 CMake 一个小时前才开始工作,我什么都没改。我该怎么做才能解决这个问题?

解决方案不仅是安装 CMake 的 MinGW64 版本,还要安装 Ninja 的 MinGW64 版本。由于与 MSYS 相比,它们具有不同的路径方案,因此在它们都在同一个 POSIX 类平台上之前,它们不能很好地协同工作。