5

MySharedLibに依存する共有ライブラリMySharedLibとバイナリMyBinaryをビルドするビルドシステムをセットアップしようとしています。ビルドシステムは、要求されたときにのみ、要求されたときにのみMySharedLibMyBinaryをインストールできる必要があります。

import os.path

env = Environment()
env.Append(CCFLAGS='-g -Wall -ansi -O2')

prefix = '/usr/local'
lib_dir = os.path.join(prefix, 'lib')
bin_dir = os.path.join(prefix, 'bin')
Export('env prefix lib_dir bin_dir')

libMySharedLib = SConscript('libMySharedLib/SConscript')
MyBinary   = SConscript('MyBinary/SConscript')

env.Alias('install', env.Install(lib_dir, libMySharedLib))
env.Alias('install', env.Install(bin_dir, MyBinary))

コマンドライン引数なしでSConsを実行すると、MySharedLibとMyBinaryがビルドされますが、それらをインストールしようとします。インストール対象を尋ねたときだけインストールしてほしい。何度も試し、ドキュメントを読みましたが、理解できません。

4

1 に答える 1

6

デフォルトでは、scons スクリプトにターゲットが設定されていない場合、scons はすべてのターゲットを「.」でビルドします。Default 関数を使用して、デフォルトでビルドするターゲットを制御できます。

lib = SConscript('libMySharedLib/SConscript')
bin = SConscript('MyBinary/SConscript')

env.Alias('install', env.Install(lib_dir, lib))
env.Alias('install', env.Install(bin_dir, bin))

# By default (scons called with no explicit target), only build bin
Default(bin)

私の知る限り、ダミーのターゲットを作成することはできますが、scons に何もビルドしないように指示する方法はありません。

于 2009-06-14T07:33:04.187 に答える