Python脚本:如何修复CMake错误:无法创建命名生成器?

问题描述

  • 操作系统:Windows 10
  • CMake:3.18.2
  • MSVC:16.7.3

当我使用命令行时,可以使用以下命令行生成构建

cmake -B "D:\Builds" -S "D:\src" -G "Visual Studio 16 2019" -A "x64" 

当我使用以下Pytnon脚本时:

subprocess.call([
    '...\cmake.exe','-B "D:\Builds"','-S "D:\src"','-G "Visual Studio 16 2019"','-A "x64"'
])

我收到一个错误:

CMake Error: Could not create named generator  "Visual Studio 16 2019"

为什么会发生以及如何解决?

PS:这不是任何问题的重复,这是新的

更新1 : 当我将生成器行更改为

'-G Visual Studio 16 2019'

我看到以下错误:

CMake Error: Could not create named generator  Visual Studio 16 2019

所以我认为不是双引号掉了

解决方法

对我来说,通过删除 Python 中引号内的引号解决了类似的问题,如上面@Tsyvarev 的评论所暗示的那样。爱荷华州:

subprocess.call(['cmake','-G','"Visual Studio 16 2019"']) # Fails
subprocess.call(['cmake','Visual Studio 16 2019'])   # Succeeds

或者如果你想要一个生成器参数:

subprocess.call(['cmake','-G"Visual Studio 16 2019"']) # Fails
subprocess.call(['cmake','-GVisual Studio 16 2019'])   # Succeeds
,

您似乎已经安装了两个版本的CMake。确保您的Python脚本中使用的版本大于或等于CMake 3.14版本。 Visual Studio 16 2019生成器在较早的CMake版本中不可用。

您可以通过添加以下内容来测试Python脚本使用的CMake版本:

subprocess.call([
    '...\cmake.exe','--version'
])

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...