gpt4 book ai didi

python - SCons 配置文件和默认值

转载 作者:太空狗 更新时间:2023-10-30 01:10:26 26 4
gpt4 key购买 nike

我有一个使用 SCons(以及 MinGW/gcc,具体取决于平台)构建的项目。这个项目依赖于其他几个库(我们称它们为 libfoolibbar),它们可以为不同的用户安装在不同的地方。

目前,我的 SConstruct 文件嵌入了这些库的硬编码路径(例如:C:\libfoo)。

现在,我想在我的 SConstruct 文件中添加一个配置选项,以便在另一个位置安装 libfoo 的用户(比如 C:\custom_path\libfoo) 可以做类似的事情:

> scons --configure --libfoo-prefix=C:\custom_path\libfoo

或者:

> scons --configure
scons: Reading SConscript files ...
scons: done reading SConscript files.
### Environment configuration ###
Please enter location of 'libfoo' ("C:\libfoo"): C:\custom_path\libfoo
Please enter location of 'libbar' ("C:\libfoo"): C:\custom_path\libbar
### Configuration over ###

一旦选择,这些配置选项应该写入某个文件并在每次 scons 运行时自动重新读取。

scons 是否提供这样的机制?我将如何实现这种行为?我并不完全掌握 Python,因此欢迎使用明显(但完整)的解决方案。

谢谢。

最佳答案

SCons 有一个名为“Variables”的功能。您可以对其进行设置,以便它非常容易地从命令行参数变量中读取。所以在你的情况下你会从命令行做这样的事情:

scons LIBFOO=C:\custom_path\libfoo

... 并且变量将在运行之间被记住。所以下次你只要运行 scons,它就会使用之前的 LIBFOO 值。

在代码中你可以这样使用它:

# read variables from the cache, a user's custom.py file or command line
# arguments
var = Variables(['variables.cache', 'custom.py'], ARGUMENTS)
# add a path variable
var.AddVariables(PathVariable('LIBFOO',
'where the foo library is installed',
r'C:\default\libfoo', PathVariable.PathIsDir))

env = Environment(variables=var)
env.Program('test', 'main.c', LIBPATH='$LIBFOO')

# save variables to a file
var.Save('variables.cache', env)

如果你真的想使用“--”样式选项,那么你可以将上面的方法与 AddOption 函数结合起来,但它更复杂。

This SO question 讨论了在不通过环境传递值的情况下从变量对象中获取值所涉及的问题。

关于python - SCons 配置文件和默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3725205/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com