如何使用 python 创建 CMake 命令的子进程?
how to create subprocess of CMake command with python?
所以我现在正在使用 cmake 命令来构建和 运行 某些东西,如果我 运行 直接在 shell 中使用这个命令就可以了
并构建文件
但是如果我在子进程的帮助下 运行 它在 python 里面,什么也没有发生。
代码 cmake 文件
现在 运行 我在终端中使用了以下命令
$ mkdir build && cd build
$ cmake .. && 制作
完全有效
现在 python 第一个命令正在运行并且构建目录已形成
但是 cmake 不工作。
您的问题是 subprocess.run
不维护调用之间的当前工作目录。所以 cmake ..
在 build
文件夹 上方 目录中运行,而不是 build
文件夹 在 中运行。无论如何,您应该使用以下两个命令:
$ cmake -S . -B build
$ cmake --build build
第一个命令告诉 CMake 使用当前目录 (.
) 作为源文件 (-S
) 并使用目录 build
作为构建输出 (-B
).如果该目录不存在,它将创建该目录。
第二个命令要求 CMake 在给定目录 (build
) 中调用本机构建工具(在您的情况下为 make
)。
您应该能够将这些粘贴到您的 subprocess.run
调用中并让它工作 没有 shell=True
.
所以我现在正在使用 cmake 命令来构建和 运行 某些东西,如果我 运行 直接在 shell 中使用这个命令就可以了
并构建文件
但是如果我在子进程的帮助下 运行 它在 python 里面,什么也没有发生。
代码 cmake 文件
现在 运行 我在终端中使用了以下命令 $ mkdir build && cd build
$ cmake .. && 制作
完全有效
现在 python 第一个命令正在运行并且构建目录已形成 但是 cmake 不工作。
您的问题是 subprocess.run
不维护调用之间的当前工作目录。所以 cmake ..
在 build
文件夹 上方 目录中运行,而不是 build
文件夹 在 中运行。无论如何,您应该使用以下两个命令:
$ cmake -S . -B build
$ cmake --build build
第一个命令告诉 CMake 使用当前目录 (.
) 作为源文件 (-S
) 并使用目录 build
作为构建输出 (-B
).如果该目录不存在,它将创建该目录。
第二个命令要求 CMake 在给定目录 (build
) 中调用本机构建工具(在您的情况下为 make
)。
您应该能够将这些粘贴到您的 subprocess.run
调用中并让它工作 没有 shell=True
.