12

私はcmakeを使用してプロジェクトをソースからビルドしています。これは、ソースディレクトリが不要なファイルで汚染されないようにするために非常に便利です。

CMakeLists.txtが現在のディレクトリにあるとすると、これは次のように実行できます。

mkdir build
cd build
cmake ..
make

どうすればsconsで同じことができますか?

4

1 に答える 1

13

SConstructファイルでは、バリアントdirを使用します。

SConscript("main.scons", variant_dir="build", duplicate=0)

次に、main.scons通常どおりすべてを設定します。

env = Environment()
env.Program(target='foo', source=Split('foo.c bar.c'))

リポジトリを(ab)使用することで、バリアントdirをSConstructにハードコーディングせずにこれを行うことは可能ですが、そのアプローチにはバグがあります。記録のために、次のように上記を実行して、別のディレクトリにビルドします。

mkdir mybuild
cd mybuild
scons -Y .. -f ../main.scons

最も簡単で最も実行可能なのは、を使用することvariant_dirです。次に、これを通常どおり最上位のソースディレクトリから実行します。すべてのビルドアーティファクトはbuildサブディレクトリに生成されます。

JesperEのコメントに応えて、トップレベルのSConstructを記述して、オプションで名前が付けられたビルドディレクトリを追加する方法を次に示します。

AddOption('--build', default='build')
SConscript("main.scons", variant_dir=GetOption('build'), duplicate=0)

次に、コマンドラインから次のようにこれを呼び出して、「baz」というビルドディレクトリを作成します。

$ scons --build=baz
于 2009-11-19T14:48:44.520 に答える