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