如何“从 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'的主要内容,如果未能解决你的问题,请参考以下文章