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

6l7fqoea  于 11个月前  发布在  Python
关注(0)|答案(3)|浏览(169)
  • 操作系统: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:这不是重复的任何问题,这是新的

Update1:当我将生成器行更改为

'-G Visual Studio 16 2019'


我看到以下错误:

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


所以我认为这不是双引号的下降

olhwl3o2

olhwl3o21#

看起来你可能安装了 * 两个版本 * 的CMake。请确保Python脚本中使用的版本大于或等于CMake 3.14版本。Visual Studio 16 2019生成器在早期的CMake版本中不可用。
您可以通过添加以下内容来测试Python脚本使用的CMake版本:

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

字符串

5rgfhyps

5rgfhyps2#

对我来说,一个类似的问题是通过在Python中删除引号中的引号来解决的,正如@Tsyvarev上面的评论所暗示的那样。

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

字符串
或者如果你想要一个生成器arg:

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

bbuxkriu

bbuxkriu3#

我尝试了以下两个命令:

echo_cmd = ["echo", '"Visual Studio 16 2019"']
subprocess.run(echo_cmd, check=True)

字符串
结果是"Visual Studio 17 2022"

echo_cmd = ["echo", "Visual Studio 16 2019"]
subprocess.run(echo_cmd, check=True)


结果是Visual Studio 17 2022
所以你的CMake接收到的参数是一个包含引号的字符串,但它不需要引号。

相关问题