scons に基づくプロジェクト用のビルド システムを作成しようとしています。
プロジェクトはいくつかのディレクトリで構成され、それぞれがプロジェクト全体の一部を保持しています。
各ディレクトリには、共有ライブラリ、プログラム、またはプロセス (デーモン) のいずれかのソースが保持されます。
1 つのディレクトリ ( bin ) には、すべての共有ライブラリとすべての実行可能ファイルが格納されます。
ほとんどのディレクトリには、ディレクトリのモジュール (lib / executable) をビルドしてbinディレクトリに配置する sconscript ファイル ( Sconstructという名前) が既に含まれています。
ここで、もう 1 つの sconscript を作成して、すべてを支配したいと考えています。
親ディレクトリには、プロジェクトのすべてのライブラリと実行可能ファイルをビルドする sconscript が必要です。親ディレクトリと影響を受けるすべてのモジュールが再構築されます。
いくつかの方法を試しましたが、すべて失敗しました。
私は scons ビジネスの初心者であり、これが私の失敗の根本的な原因ではないかと疑っていますが、この問題は他の経験豊富な開発者によって何度も解決されたと確信しています - 私が説明した状況は非常に一般的です.
だから、どんな提案も大歓迎です!
編集:
親ディレクトリの現在の Sconstruct は次のようになります。
import os
env = os.environ
Export('env', 'os')
SConscript([
'Server1_Dir/Sconstruct',
'Server2_Dir/Sconstruct',
'Server3_Dir/Sconstruct'
])
サブディレクトリ内の Sconstructs (Sconscript と呼ばれる必要があることはわかっています) は次のように始まります。
import os
Import('env')
home=env.get('HOME')
したがって、すべてのスクリプトに同じ環境を使用しているように思えますが、多くのスクリプトを取得しています。
scons: warning: Two different environments were specified for target....
私には不明確な警告。
また、メイン スクリプトのすべてのサーバーの組み合わせでこれらの警告が生成されるわけではないことにも注意してください。
これが正しい方法のように思えますが、これらの警告 (およびその根本原因) を取り除く方法が見つかりません。
ありがとう。