【问题标题】:Force CMake to use MSVC with Ninja强制 CMake 将 MSVC 与 Ninja 一起使用
【发布时间】:2020-07-06 11:05:36
【问题描述】:

我正在尝试在 64 位 Windows 上编译 aseprite 并使用 CMake 和 Ninja 进行编译

当我运行 CMake 时,我看到它正在使用 MINGW64 来制作构建文件,即使提到不支持 MinGW。我尝试写 -DCMAKE_IGNORE_PATH=C:\MinGW\bin 但它似乎忽略了它,并且在运行 ninja aseprite 时出现错误

世代:

cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLAF_BACKEND=skia -DSKIA_DIR=C:\deps\skia -DSKIA_LIBRARY_DIR=C:\deps\skia\out\Release-x64 -DCMAKE_IGNORE_PATH=C:\mingw64\bin -G Ninja ..

我已经检查并且所有依赖项都存在

错误:

FAILED: bin/modp_b64_gen.exe
cmd.exe /C "cd . && C:\mingw64\bin\gcc.exe -O2 -g -DNDEBUG   laf/third_party/CMakeFiles/modp_b64_gen.dir/stringencoders/src/arraytoc.c.obj laf/third_party/CMakeFiles/modp_b64_gen.dir/stringencoders/src/modp_b64_gen.c.obj  -o bin\modp_b64_gen.exe -Wl,--out-implib,lib\libmodp_b64_gen.dll.a -Wl,--major-image-version,0,--minor-image-version,0  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 wsock32.lib ws2_32.lib && cd ."
gcc.exe: error: wsock32.lib: No such file or directory
gcc.exe: error: ws2_32.lib: No such file or directory
[563/1514] Building CXX object third_party/harfbuzz/CMakeFiles/harfbuzz.dir/src/hb-ot-layout.cc.obj
ninja: build stopped: subcommand failed.

我在github上看到一个issue,解决办法是从GCC改成MSVC,但是没有提到如何强制MSVC进行生成过程。 当我从 PATH 中删除 mingw64 时,它仍然以某种方式找到它,如果我删除该文件夹,它会抛出一个找不到 GCC 的错误。

如何在 CMake 上强制使用 MSVC?

【问题讨论】:

  • 我认为cmake -G Ninja 必须是cmake -GNinjacmake -G "Ninja"
  • @JesperJuhl 无论如何它都可以工作,它说构建文件已写入。当我写ninja aseprite时出现错误

标签: c++ visual-c++ cmake ninja


【解决方案1】:

我通过将环境变量 CC 更改为 cl 来解决此问题

set CC=cl

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-30
    • 2017-08-26
    • 2011-06-08
    • 2015-04-08
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多