1

私はsconsを初めて使用し、ある(con)スクリプトが生成するバイナリ(実行可能ファイル+オブジェクト)を別のディレクトリにリダイレクトする方法を見つけました。

私のメイン プロジェクト ディレクトリ (ルート) にSConstructは、次の行を含む 1 つのファイルがあります。

SConscript("source/SConscript", variant_dir="bin")

明らかなように、source/SConscriptスクリプトのビルド (バリアント) ディレクトリを に設定しますbin

source/SConscript:

common = []

env = Environment()
env.Program("test", ["test.cpp"] + common)
env.Program("sdl-test", ["sdl_test.cpp"] + common, LIBS=["SDL2"])

私の現在のセットアップは考えに及ばない...

すべてのオブジェクト ファイルを にobject置き、すべてのソース ファイルを に保持しsource、最終的なプログラム バイナリをbinディレクトリにビルドしたいと考えています。

どうすればsconsでそれを達成できますか? (できれば、命令型 (通常の) Python をいじらないでください。これが組み込みの機能であることを願っています。)

4

1 に答える 1

2

variant_dir を別のディレクトリに設定するオブジェクトに別の SConscript スクリプトを追加すると、次のようになります。

Sコンストラクト

env = Environment()
SConscript('source/SConscript_obj', variant_dir='object',
           duplicate=0, exports='env')
SConscript('source/SConscript', variant_dir='bin',
           duplicate=0, exports='env')

ソース/SConscript_obj

Import('env')

env.Object("test.cpp")
env.Object("sdl_test.cpp")

ソース/SConscript

Import('env')

env.Program("test", ["#/object/test.o"])
env.Program("sdl-test", ["#/object/sdl_test.o"], LIBS=["SDL2"])

または、SConscript_obj では、オブジェクトをコンパイルするだけでなく、ライブラリを作成することもできます。

既存の SConscript に VariantDir への呼び出しを追加することも検討できますが、それがうまく機能するかどうかはわかりません。

于 2013-10-22T05:22:02.107 に答える