私はcmakeを使用してプロジェクトをソースからビルドしています。これは、ソースディレクトリが不要なファイルで汚染されないようにするために非常に便利です。
CMakeLists.txtが現在のディレクトリにあるとすると、これは次のように実行できます。
mkdir build
cd build
cmake ..
make
どうすればsconsで同じことができますか?
私はcmakeを使用してプロジェクトをソースからビルドしています。これは、ソースディレクトリが不要なファイルで汚染されないようにするために非常に便利です。
CMakeLists.txtが現在のディレクトリにあるとすると、これは次のように実行できます。
mkdir build
cd build
cmake ..
make
どうすればsconsで同じことができますか?
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