You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows11下设置CMAKE_ARGS含空格参数的问题求助

解决Windows 11下llama-cpp-python编译时CMAKE_ARGS中MinGW Makefiles空格拆分问题

问题描述

在Windows 11上安装llama-cpp-python,已配置CMAKE_ARGS环境变量指向MinGW的gcc和g++用于编译,但设置-G MinGW Makefiles生成器参数时,空格导致参数被拆分,尝试了-G MinGW Makefiles、-G 'MinGW Makefiles'、-G "MinGW Makefiles"、-G MinGW\ Makefiles这些方式都无效,报错如下:

Building wheel for llama-cpp-python (pyproject.toml) ... error
error: subprocess-exited-with-error

× Building wheel for llama-cpp-python (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [86 lines of output]
*** scikit-build-core 0.9.2 using CMake 3.29.1 (wheel)
*** Configuring CMake...
2024-04-26 23:46:20,586 - scikit_build_core - WARNING - Can't find a Python library, got libdir=None, ldlibrary=None, multiarch=None, masd=None
CMake Error: Could not create named generator "MinGW

Generators
    Visual Studio 17 2022        = Generates Visual Studio 2022 project files.
                                   Use -A option to specify architecture.
    Visual Studio 16 2019        = Generates Visual Studio 2019 project files.
                                   Use -A option to specify architecture.
    Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
                                   Optional [arch] can be "Win64" or "ARM".
    Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
                                   Optional [arch] can be "Win64" or "ARM".
    Visual Studio 12 2013 [arch] = Deprecated.  Generates Visual Studio 2013
                                   project files.  Optional [arch] can be
                                   "Win64" or "ARM".
    Visual Studio 9 2008 [arch]  = Deprecated.  Generates Visual Studio 2008
                                   project files.  Optional [arch] can be
                                   "Win64" or "IA64".
    Borland Makefiles            = Generates Borland makefiles.
  * NMake Makefiles              = Generates NMake makefiles.
    NMake Makefiles JOM          = Generates JOM makefiles.
    MSYS Makefiles               = Generates MSYS makefiles.
    MinGW Makefiles              = Generates a make file for use with
                                   mingw32-make.
    Green Hills MULTI            = Generates Green Hills MULTI files
                                   (experimental, work-in-progress).
    Unix Makefiles               = Generates standard UNIX makefiles.
    Ninja                        = Generates build.ninja files.
    Ninja Multi-Config           = Generates build-<Config>.ninja files.
    Watcom WMake                 = Generates Watcom WMake makefiles.
    CodeBlocks - MinGW Makefiles = Generates CodeBlocks project files
                                   (deprecated).
    CodeBlocks - NMake Makefiles = Generates CodeBlocks project files
                                   (deprecated).
    CodeBlocks - NMake Makefiles JOM
                                 = Generates CodeBlocks project files
                                   (deprecated).
    CodeBlocks - Ninja           = Generates CodeBlocks project files
                                   (deprecated).
    CodeBlocks - Unix Makefiles  = Generates CodeBlocks project files
                                   (deprecated).
    CodeLite - MinGW Makefiles   = Generates CodeLite project files
                                   (deprecated).
    CodeLite - NMake Makefiles   = Generates CodeLite project files
                                   (deprecated).
    CodeLite - Ninja             = Generates CodeLite project files
                                   (deprecated).
    CodeLite - Unix Makefiles    = Generates CodeLite project files
                                   (deprecated).
    Eclipse CDT4 - NMake Makefiles
                                 = Generates Eclipse CDT 4.0 project files
                                   (deprecated).
    Eclipse CDT4 - MinGW Makefiles
                                 = Generates Eclipse CDT 4.0 project files
                                   (deprecated).
    Eclipse CDT4 - Ninja         = Generates Eclipse CDT 4.0 project files
                                   (deprecated).
    Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files
                                   (deprecated).
    Kate - MinGW Makefiles       = Generates Kate project files (deprecated).
    Kate - NMake Makefiles       = Generates Kate project files (deprecated).
    Kate - Ninja                 = Generates Kate project files (deprecated).
    Kate - Ninja Multi-Config    = Generates Kate project files (deprecated).
    Kate - Unix Makefiles        = Generates Kate project files (deprecated).
    Sublime Text 2 - MinGW Makefiles
                                 = Generates Sublime Text 2 project files
                                   (deprecated).
    Sublime Text 2 - NMake Makefiles
                                 = Generates Sublime Text 2 project files
                                   (deprecated).
    Sublime Text 2 - Ninja       = Generates Sublime Text 2 project files
                                   (deprecated).
    Sublime Text 2 - Unix Makefiles
                                 = Generates Sublime Text 2 project files
                                   (deprecated).

  CMake Warning:
    Ignoring extra path from command line:

     "Makefiles""


  *** CMake configuration failed
  [end of output]

解决方案

方法1:CMD环境下使用双层双引号

在CMD中设置CMAKE_ARGS时,用双层双引号包裹带空格的生成器参数,确保参数完整传递:

set CMAKE_ARGS="-G ""MinGW Makefiles"" -DCMAKE_C_COMPILER=C:/path/to/mingw/bin/gcc.exe -DCMAKE_CXX_COMPILER=C:/path/to/mingw/bin/g++.exe"
pip install llama-cpp-python

方法2:PowerShell环境下用单引号包裹整体

PowerShell中直接用单引号包裹整个CMAKE_ARGS内容,内部保留双引号即可:

$env:CMAKE_ARGS = '-G "MinGW Makefiles" -DCMAKE_C_COMPILER=C:/path/to/mingw/bin/gcc.exe -DCMAKE_CXX_COMPILER=C:/path/to/mingw/bin/g++.exe'
pip install llama-cpp-python

方法3:通过pyproject.toml配置

在项目目录创建或修改pyproject.toml,添加scikit-build的CMake参数配置:

[tool.scikit-build]
cmake.args = [
    "-G", "MinGW Makefiles",
    "-DCMAKE_C_COMPILER=C:/path/to/mingw/bin/gcc.exe",
    "-DCMAKE_CXX_COMPILER=C:/path/to/mingw/bin/g++.exe"
]

然后执行本地安装:

pip install .

原理说明

Windows命令行的参数解析逻辑和类Unix系统不同,环境变量中的空格会被直接拆分。使用双层双引号(CMD)或单引号包裹整体(PowerShell),能让CMake识别到MinGW Makefiles是一个完整的生成器名称,不会被拆分成两个独立参数。

内容的提问来源于stack exchange,提问作者Leo Turoff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 08:15:09