1

プロジェクトにsconsを使用しようとしています。これまでのところ、次のものがあります。

Sコンストラクト

path = ['/usr/local/bin', '/usr/bin', '/bin']
libpath = ['/usr/local/lib', '/usr/lib', '/lib']
env = Environment()
env.Append(ENV = {'PATH' : path})
env.Append(DFLAGS = ['-version=placeholder', '-g'])
env.Append(LIBPATH = libpath)
env.Append(DPATH = '#/build_debug/')
Export('env')
env.SConscript('src/SConscript', variant_dir = 'build_debug',
               exports = {'DFLAGS' : '-debug'})

src/SConscript

Import('env')
env.Program(target = 'a.out',
            source = ['stubs.d'] + Glob('*/*.d'))

ただし、ビルドしようとすると、次のようになります。

build_debug/foo/foo.d:9: Error: module bar is in file 'bar/bar.d' which cannot be read

チェックls build_debugすると、すべてのファイルがコピーされたわけではないことがわかります。

これは以前に機能していたと思います。しかし、それ以来、私は何かを台無しにしたに違いありません。

編集: すべてのソース コードは project/src/ にあり、ビルドを project/build/ で実行したいと考えています。私の SConstruct ファイルは project/ にあります。

4

2 に答える 2

1

ソース ビルド以外は SCons でサポートされていないため、予期しない動作に驚かないでください。

彼らはこの機能を SCons 開発者のメーリング リストに追加することについて話し合っていますが、時期については明らかにしていません。

スクリプトで改善できる点がいくつかあります。

SConstruct での SConscript() の呼び出しでは、エクスポートは DFLAGS 変数ですが、SConscript では「env」のみをインポートしているため、DFLAGS 変数は表示されません。DFLAGS をインポートするか、env で DFLAGS を別の変数として設定し、SConscript の env から取得する必要があります。

また、ライブラリのパスがそのまま正しく機能するかどうかはわかりません。あなたはこれを持っています:

libpath = ['/usr/local/lib', '/usr/lib', '/lib']
env.Append(LINKFLAGS = libpath)

しかしそのままでは、SCons は-L各 libpath の前に を追加しません。LINKFLAGSuseを使用する代わりにLIBPATH、SCons は-L.

于 2012-11-01T09:49:20.200 に答える
-1

duplicateパラメータをに設定しようとすることができます0

env.SConscript('src/SConscript', variant_dir = 'build_debug',
               exports = {'DFLAGS' : '-debug'}, duplicate=0)
于 2012-11-05T10:00:43.880 に答える