2

素晴らしいビルドツールであるSConsを発見しました。

プロジェクトを複数の環境でビルドする必要があります。つまり、異なるライブラリパスを使用し、マシンに応じてパスを含める必要があります。

Pythonがすべて利用できるのでSConstruct、これを実現するためのさまざまな方法を想像できます。1つの可能性は、単一のSConstructスクリプトを持ち、複数のEnvironmentオブジェクトをインスタンス化することです。

envFoo = Environment()
envFoo.Append(CPPPATH = [...])

envBar = Environment()
envBar.Append(CPPPATH = [...])

次に、これらのEnvironmentオブジェクトの1つを何らかの方法で選択します。おそらく、コマンドラインパラメータを。に設定しsconsます。

経験豊富なsconsユーザーへの質問:これは進むべき道ですか?これを行う最も便利な方法は何ですか?

4

2 に答える 2

1

これは間違いなく機能し、より単純な状況ではおそらく良い解決策になるでしょう。Pythonクラスを使用してEnvironmentFactoryを実際に作成する、より複雑な状況があります。たとえば、次のようになります。

env = EnvironmentFactory.createEnv(cmdLineArgs)

もう1つの便利なSConsツールは、この章で説明するように、ParseFlags()、ParseConfig()、およびMergeFlags()を使用して、コマンドラインオプションから環境に「自動的に」データを入力することです。

于 2013-01-22T13:36:10.283 に答える
1

あなたはこれを行うことができます

envSelect = ARGUMENTS.get('env', "default")

if envSelect == "default":
    env = Environment()
elif envSelect == "env2":
    env = Environment(whatever you want to do here)
elif envSelect == "env3":
    env = Environment(whatever you want to do here)
else:
    env = Environment(whatever you want to do here)

ARGUMENTS.getを使用して、コマンドを実行するときにデフォルトを指定します。scons そうでない場合はscons env=env2、これで質問に答えることができます。

編集:これは、sconsが実行されたときにOSを決定したい場所で作業しているプロジェクトからのスニペットです

import sys
import os
import glob
import subprocess
#Find the host Operating System
platform = sys.platform

if platform != "win32":
    env = Environment()
else:
    #Specify to compile in 32-bit mode for Visual Studio
    #This is needed as Qt libraries on Windows for Visual
    #Studio are 32-bit only
    env = Environment(TARGET_ARCH = 'x86')

#Get Qt directory as scons argument or use default setting
if platform != "win32":
    qtDir = ARGUMENTS.get('qt', '/usr/local/Trolltech/Qt-4.8.4/')
else:
    qtDir = ARGUMENTS.get('qt', 'C:\\Qt\\4.8.4\\')
于 2013-02-26T19:57:26.547 に答える