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

时间:2009-12-28 20:18:24

标签: python compiler-flags

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

我正在使用子进程模块执行某些操作,但是,我不确定这是否正确。

该脚本将首先设置CFLAGS然后编译一些代码,因此在编译代码时cflags需要保持不变。

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

请告知

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

通过修改os.environ['CXXFLAGS']在环境中设置它应该有效。但是,我总是将额外的CXXFLAGS传递给./configure的方法是将它传递给命令行,例如:

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

完成此操作后,您不需要在环境中设置CXXFLAGS或明确将其传递给make(autotools将创建Makefile,以便它们包含您的自定义CXXFLAGS)。