0

私が2つの s を持っているとしましょうSConscript:

SConstruct
  SConscript a
  SConscript b

SConscript aファイルを生成しpkg-configます(何も持っていない外部のもの用)。これには別名があります (置換、インストールなど) pkg_aliasSConscript bを呼び出しenv.ParseConfig(...)てビルドするappため、ファイルが既に生成されていることが重要です(そうでない場合pkg-configは文句を言うでしょう)。

だから私が必要とするのは、次のような依存関係です: app-> parse-> pkg_alias.

これを表現することは可能ですか?

のようにしようとするのはsubdir_env.Depends(subdir_env, 'pkg_alias')いつですか。subdir_envParseConfig

4

1 に答える 1

0

私はこれを想定しています

アプリ -> パース -> pkg_alias

app は parse に依存し、parse は pkg_alias に依存することを意味します。

Command() ビルダーを介して呼び出している場合pkg-config、SCons は依存関係に使用できるターゲットを作成します。pkg-config問題は、ターゲットがビルドされる前に ParseConfig() が実行されるため、ParseConfig() をターゲットに依存させることができないと思うことです。実際、SConstruct とすべての SConscript は、ターゲットを構築する前に評価されます。

代わりに、pkg-configCommand() ビルダーを使用せずに Python 経由で直接呼び出し、ターゲットをビルドする前にすべて ParseConfig() を呼び出すことができます。次に、env の内容に従ってアプリがビルドされます。

念のため、次のように同じ環境ですべてを取得できます。

関数で SConscript を呼び出しSConscript()ます。これを行うと、次のように SConstruct で環境を作成し、それを SConscripts にエクスポートできます。

Sコンストラクト

env = Environment()
SConscript('suba/SConscript', exports='env', duplicate=0)
SConscript('subb/SConscript', exports='env', duplicate=0)

スバ/スクスクスクリプト

Import('env')

次に、スクリプトで行うことはすべて、同じ環境で行われます。

于 2013-06-05T16:54:31.607 に答える