我有一个项目,其中包含几个单独的 Sconstruct 文件和一个顶级 SConstruct 文件。
project/SConstruct -- toplevel SConstruct file
project/binary1/SConstruct -- lower level SConstructs
project/binary2/SConstruct
project/binary3/src/SConstruct
我希望能够使用选项调用各个 SConstruct 文件。所以每个 SConstruct 都可以这样调用:
scons install --prefix=/usr/local/bin
他们在 SConstruct 文件中有一个关于该选项的部分:
AddOption('--prefix',
dest='prefix',
type='string',
nargs=1,
action='store',
metavar='DIR',
default=prefix,
help='installation prefix')
另外,在顶层 SConstruct 文件中,我希望能够调用所有较低级别的 SConstruct 文件,因此我将其添加到顶层 SConstruct 中:
SConscript(binary1/SConstruct)
SConscript(binary2/SConstruct)
SConscript(binary3/src/SConstruct)
但是,如果我尝试这样做,我会得到一个OptionConflictError
on,binary2/SConstruct
因为该--prefix
选项已经定义(在 中binary1/SConstruct
):
OptionConflictError: option --prefix: conflicting option string(s): --prefix:
有没有办法解决这个问题OptionConflictError
?
我知道我可以AddOption()
用一个try
块来包围调用,但是有更好的方法吗?我可以添加一个conflict_handler
吗?我可以检查该--prefix
选项是否已经存在吗?
我可以更好地组织事情吗?不幸的是,我需要单独的 SConstruct 文件,所以我不能重新组织太多。