我正在编写一个需要根据需要设置环境CFLAGS的python程序。
我正在使用子进程模块执行某些操作,但是,我不确定这是否正确。
该脚本将首先设置CFLAGS然后编译一些代码,因此在编译代码时cflags需要保持不变。
我知道我的系统中有os.environ['CXXFLAGS']
默认为“”。所以我的问题是,我是否只需要在编译代码之前设置os.environ['CXXFLAGS']
值,或者我是否需要以其他方式执行此操作?
请告知
答案 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)
答案 1 :(得分:0)
通过修改os.environ['CXXFLAGS']
在环境中设置它应该有效。但是,我总是将额外的CXXFLAGS
传递给./configure
的方法是将它传递给命令行,例如:
cmd = [
'./configure',
'CXXFLAGS=-O2 -march=i586 -mtune=i686',
]
subprocess.Popen(cmd)
完成此操作后,您不需要在环境中设置CXXFLAGS
或明确将其传递给make(autotools将创建Makefile,以便它们包含您的自定义CXXFLAGS
)。