いくつかの個別の Sconstruct ファイルと 1 つのトップレベルの 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が表示されます (in ):binary2/SConstruct
--prefix
binary1/SConstruct
OptionConflictError: option --prefix: conflicting option string(s): --prefix:
これを回避する方法はありOptionConflictError
ますか?
AddOption()
への呼び出しをtry
ブロックで囲むことができることはわかっていますが、より良い方法はありますか? を追加できますconflict_handler
か? --prefix
オプションが既に存在するかどうかを確認できますか?
物事をうまく整理できますか?残念ながら個々の SConstruct ファイルが必要なので、あまり整理できません。