python - 在 Python 脚本中为 C++ 代码运行构建 (make)

标签 python c++ shell scripting

当我想使用 Python 脚本编译用 C++ 编写的代码以在 x 目录中运行“make”时,我一直遇到错误。编译代码大约需要几秒钟,所以我使用时间模块让脚本休眠 60 秒以完成代码编译。

代码如下:

from subprocess import call
from time import sleep
def make_ut_adsmain():
        os.system("make ../../ads/main/unittest")
        # call(["ls", "-l"])
        sleep(60)

make_ut_adsmain()

# Run other functions when compiled...

错误

make: *** No rule to make target `../../ads/main/unittest'.  Stop.

代码从未真正编译过,因为其余代码依赖于从未创建的日志文件。请指导我。

最佳答案

我实际上弄明白了并能够使用以下代码运行构建过程:

import subprocess
from time import sleep
def make_ut_adsmain():
        subprocess.Popen(["make"], stdout=subprocess.PIPE, cwd="../../ads/main/unitest")
        sleep(60)

make_ut_adsmain()

请注意,之前的解决方案仅在您需要绕过错误时才有效。正确的做法如下。查看@tdelaney 评论并阅读有关 python 文档的更多信息 https://docs.python.org/2/library/subprocess.html

import subprocess
from time import sleep
def make_ut_adsmain():
        subprocess.check_all(["make"], cwd="../../ads/main/unitest")

make_ut_adsmain()

关于python - 在 Python 脚本中为 C++ 代码运行构建 (make),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39858958/

相关文章:

python - 如何将可能为 None 到 '%s' 的字符串写入文件(python)

c++ - 将深度渲染缓冲区复制到深度缓冲区

c# - 获取调用我的 dll 的 exe 的名称

linux - 如何每 10 分钟运行一次脚本

linux - 如何在 Linux (Ubuntu) 中查找所有连接的 USB 设备?

linux - 替换平面文件中的第二行

python - 在Python中测试文件名是否具有正确的命名约定

python - pyInstaller 不在自己的包路径中导入模块

python - Django 使用 ModelForm 更新一个字段

c++ - 如何使用最小包含创建一个用模板函数包装对象的库?