あなたは[1]のライブラリへの完全なパスを指定したことがありますか?私の元の答えに詳細情報を追加
ブレイディ
:
通常、LIBPATH建設変数がされています:あなたがSConsはスクリプトを掲示してhaventので は、私は以下の提示のようなその何かを仮定しますライブラリへのパスを指定するために使用されますが、これはProgram()Builderでのみ機能するように見え、arコマンドでは使用されません。次に、問題のライブラリの完全なパスを指定する必要があります。そうする方法を示しSConscriptここ
# tree .
.
|-- SConstruct
|-- fileA.cc
|-- fileA.o
|-- libB
| `-- libmoduleB.a
|-- libmoduleA.a
`-- libmoduleC.a
されています:私は、次のディレクトリ構造を持っていると仮定すると
env = Environment()
env.Library(target = 'moduleA', source = 'fileA.cc')
env.Library(target = 'moduleC', source = ['libmoduleA.a', '#libB/libmoduleB.a'])
またはその代わりに相対ディレクトリ「#libB」のは、あなたは絶対パスを指定することができます。ここで
libBname = "%smoduleB%s" % (env['LIBPREFIX'], env['LIBSUFFIX'])
libB = os.path.join(pathToLibB, libBname)
は結果である:それは、ポータブル、あなたがこのようなmoduleBライブラリ(とmoduleA)を指定する必要があります作るために、
を(パスの「#」がSConscriptにその相対を意味する)と:
# scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o fileA.o -c fileA.cc
ar rc libmoduleA.a fileA.o
ranlib libmoduleA.a
ar rc libmoduleC.a libmoduleA.a libB/libmoduleB.a
ranlib libmoduleC.a
scons: done building targets.
スタティックライブラリを別のスタティックライブラリにリンクすることはできません。静的ライブラリの内容を別の静的ライブラリに含めることができます。 (非ウィンドウと仮定)。あなたはそれを行うのに必要なコマンドの例にリンクしています。 – bdbaddog