0

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

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

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

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

请指教

4

2 回答 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)

请参阅Pythonsubprocess模块的文档。

于 2009-12-28T20:27:31.490 回答
0

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

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

以这种方式完成后,您不需要CXXFLAGS在环境中进行设置或显式将其传递给 make(autotools 将创建 Makefiles 以便它们包含您的 custom CXXFLAGS)。

于 2009-12-28T21:52:59.737 回答