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

时间:2016-10-04 18:04:46

标签: 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.

代码永远不会真正编译,因为其余的代码依赖于永远不会创建的日志文件。请指导我。

1 个答案:

答案 0 :(得分:2)

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

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 docs 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()