如何从Python脚本“导出CFLAGS='我的-标志-在这里'”?

0 投票
2 回答
3328 浏览
提问于 2025-04-15 17:26

我正在写一个Python程序,需要根据需要设置环境变量CFLAGS。

我使用了subprocess模块来执行一些操作,但我不确定这样做是否正确。

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

我知道在我的系统中有一个os.environ['CXXFLAGS'],默认值是""。所以我的问题是,我只需要在编译代码之前设置os.environ['CXXFLAGS']的值,还是需要用其他方法来做?

请给我一些建议。

2 个回答

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)

查看Python的subprocess模块文档

0

通过修改 os.environ['CXXFLAGS'] 来设置环境变量应该是可行的。不过,我一直以来给 ./configure 传递额外的 CXXFLAGS 的方法是直接在命令行中传递,比如:

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

这样做的话,你就不需要在环境中设置 CXXFLAGS,也不需要明确地传递给 make(autotools 会自动生成包含你自定义的 CXXFLAGS 的 Makefile)。

撰写回答