Python脚本:如何修复CMake错误:无法创建命名生成器? 操作系统:Windows 10 CMake:3.18.2 MSVC:16.7.3
当我使用命令行时,我可以用下面的行生成构建Python脚本:如何修复CMake错误:无法创建命名生成器? 操作系统:Windows 10 CMake:3.18.2 MSVC:16.7.3,python,windows,cmake,Python,Windows,Cmake,当我使用命令行时,我可以用下面的行生成构建 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"',
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"
为什么会发生这种情况以及如何解决
附:这不是重复的任何问题,这是新的
更新1:
当我把发电机线路换到
'-G Visual Studio 16 2019'
我看到以下错误:
CMake Error: Could not create named generator Visual Studio 16 2019
所以我认为这不是doublequotes fall,看起来您可能安装了两个版本的CMake。确保Python脚本中使用的版本大于或等于CMake版本3.14。Visual Studio 16 2019生成器在早期的CMake版本中不可用 您可以通过添加以下内容来测试Python脚本使用的CMake版本:
subprocess.call([
'...\cmake.exe',
'--version'
])
对我来说,类似的问题通过删除Python中引号中的引号得到了解决,正如上面@Tsyvarev的评论所暗示的那样。IOW:
subprocess.call(['cmake','-G','visualstudio 16 2019'])失败
子进程调用(['cmake','-G','visualstudio 16 2019'])成功
或者,如果需要一个生成器参数:
subprocess.call(['cmake','-G“Visual Studio 16 2019”]”)失败
子进程调用(['cmake','-GVisual Studio 16 2019'])成功
是的,我安装了2个cmake版本。一个是3.17,另一个是3.18.2。我使用您的脚本并查看-“cmake版本3.18.2”您确定在运行cmake
期间收到的唯一消息是给定的“cmake错误:无法创建命名生成器”吗?通常情况下,这些消息伴随着其他消息,这些消息也与问题有关。@Tsyvarev我所看到的就是这些消息——只有这一行和后面的一组可以使用的生成器。第一个是“Visual Studio 16 2019”。我的想法是,当我使用Python脚本时,环境变量不会传递给cmake。但是我不知道该怎么办。现在问题很清楚了:“Visual Studio 16 2019”
中的双引号已成为生成器名称的一部分。@Tsyvarev,请看我文章的更新1,它没有帮助(规范-G“Visual Studio 16 2019”
用于命令行,其中单独的单词表示单独的参数,双引号用于将单独的单词分组到单个参数中。在python代码中,子流程的每个参数。call
已经是单个参数,每个内部空间(或引号)成为参数的一部分。只需使用'-G',Visual Studio 16 2019'
或'-GVisual Studio 16 2019
。在大多数情况下,单字母选项就是这样工作的:以空格分隔的选项名称和值-
,或组合使用:-