如何“从 python 脚本中导出 CFLAGS='my -flags -here'

Posted

技术标签:

【中文标题】如何“从 python 脚本中导出 CFLAGS=\'my -flags -here\'【英文标题】:how to "export CFLAGS='my -flags -here' from python script如何“从 python 脚本中导出 CFLAGS='my -flags -here' 【发布时间】:2009-12-28 20:18:24 【问题描述】:

我正在编写一个python程序,需要根据需要设置环境CFLAGS。

我正在使用 subprocess 模块来执行一些操作,但是,我不确定这是不是正确的方法。

脚本会先设置 CFLAGS 然后编译一些代码,所以编译代码时 cflags 需要保持不变。

我知道我的系统中有os.environ['CXXFLAGS'],它默认为“”。所以我的问题是,我只需要在编译代码之前设置os.environ['CXXFLAGS'] 值,还是需要其他方式?

请指教

【问题讨论】:

【参考方案1】:

你可以在不修改python进程环境的情况下做到这一点。

# Make a copy of the environment and modify that.
myenv = dict(os.environ)
myenv["CXXFLAGS"] = "-DFOO"

# Pass the modified environment to the subprocess.
subprocess.check_call(["make", "install"], env=myenv)

请参阅documentation for Python's subprocess module。

【讨论】:

简单修改os.environ['CXXFLAGS']怎么样?如果我按这个顺序执行 `os.environ['CXXFLAGS'] = "-O2 -march=i586 -mtune=i686" subprocess.Popen(['./configure', '--prefix=/usr'], stdout=subprocess.PIPE, stderr = subrprocess.STDOUT) subprocess.Popen('make', stdout=subprocess.PIPE, stderr = subrprocess.STDOUT)` 可以吗?【参考方案2】:

通过修改os.environ['CXXFLAGS'] 在环境中设置它应该可以工作。但是,我一直将额外的 CXXFLAGS 传递给 ./configure 的方式是在命令行上传递它,例如:

cmd = [
    './configure',
    'CXXFLAGS=-O2 -march=i586 -mtune=i686',
]
subprocess.Popen(cmd)

这样做后,您不需要在环境中设置 CXXFLAGS 或显式将其传递给 make(autotools 将创建 Makefile 以便它们包含您的自定义 CXXFLAGS)。

【讨论】:

这是我习惯做的,但这是我第一次从 python 做,我的问题是当我这样做时,配置失败,它说'- March' 不是一个有效的配置选项。 您可能有一些引用问题。尝试使用 shell=False 参数(默认)来 subprocess.Popen 并像我上面那样传递参数。

以上是关于如何“从 python 脚本中导出 CFLAGS='my -flags -here'的主要内容,如果未能解决你的问题,请参考以下文章

Markdown公式用法大全

shell编程-如何定义函数如何调用函数如何调试shell

[精选] Mysql分表与分库如何拆分,如何设计,如何使用

四连问:前后端分离接口应该如何设计?如何保证安全?如何签名?如何防重?

集合元素如何添加?如何删除?如何遍历?

2021-10-16 如何如何如何。