いくつかの python ビルド スクリプトのスクリプトを再利用しようとしています。私の「再利用可能な」部分の省略版は (_build.py) のようになります:
Sources = []
Sources += glob('*.c')
Sources += glob('../FreeRTOS/*.c')
...
def addSources(directory, *rest):
for each in rest:
Sources += ['../'+directory+'/'+each+'.c']
def addSharedSources(*args):
addSources('Shared', *args)
次に、カスタマイズされた部分に、(build.py) のようなものがあります。
#!/usr/bin/env python
from _build import *
...
#Additional source files from ../Shared, FreeRTOS and *.c are already in
addSharedSources('ccpwrite', 'discovery', 'radioToo', 'telemetry', 'utility')
残念ながら、build.py を実行しようとすると、次のようなトレースバックが表示されます。
Traceback (most recent call last):
File "./build.py", line 8, in <module>
addSharedSources('ccpwrite', 'discovery', 'radioToo', 'telemetry', 'utility')
File "/Users/travisg/Projects/treetoo/Twig/_build.py", line 49, in addSharedSources
addSources('Shared', *args)
File "/Users/travisg/Projects/treetoo/Twig/_build.py", line 46, in addSources
Sources += ['../'+directory+'/'+each+'.c']
UnboundLocalError: local variable 'Sources' referenced before assignment
そのため、ワイルドカード インポートを行ったにもかかわらず、インポート関数が呼び出されたときに、元からインポートされた「グローバル」変数を参照していないように見えます。それを機能させる方法はありますか?をいじってみましglobal
たが、それは私が望んでいたことではなかったようです。