2011-01-13 10 views
3

私は非標準の場所にインストールした一連の依存関係を必要とするプログラムをコンパイルするためにSConsを使用しようとしています。SCons - 非標準の場所にあるヘッダー/ライブラリ

私は/ home/dja/ocrに依存関係をインストールしました。現在、私はメインプログラムをコンパイルしようとしていますが、SConsにライブラリとヘッダをどこで探すべきかを理解できません。

私は(とりわけ)試してみた:

scons prefix=/home/dja/ocr 

scons includepath=/home/dja/ocr/include libpath=/home/dja/ocr/lib 

env LIBPATH=/home/dja/ocr/lib INCLUDEPATH=/home/dja/ocr/include scons 

...etc... 

結果は常に同じです:

scons: Reading SConscript files ... 
Currently supported OS version: Ubuntu 10.04 
Checking for C++ library iulib... no 
AssertionError: : 
    File "/home/dja/ocr/src/ocropus/SConstruct", line 107: 
    assert conf.CheckLibWithHeader("iulib","iulib/iulib.h","C++"); 

私はGoogleで答えを見つけることができませんでした。

これを動作させるには正しいSCons fooは何ですか?

答えて

3

とは異なりと特定の環境変数のための規則、または--with-Xのオプションをに設定してを構成する場合、SConstructの作成者は、ユーザーが上書きを指定する方法を提供する必要があります。既定では、sconsは環境からビルド変数を読み込みません。

ユーザー設定を処理する方法はさまざまです(私が学んだVariablesを参照してください)。しかし、私は広く認められている慣習には気づきません。あなたの立場にいるユーザーにとっては、ビルドのドキュメントやまともなscons --helpの説明を書いている作者に頼るか、SConstructを読むことに頼る必要があります。 と書かなければならない場合があります。

私の知っているスコオンの知識が古くなったら、私はこれで修正されてうれしいです。

0

SConstructファイルを編集することによって、これを行うことが可能ですようだ:http://osdir.com/ml/programming.tools.scons.user/2005-09/msg00060.html

これはかなりラメです - より良い一般的な方法はありますか?

(この場合、SConstructファイルを読むことが、具体的依存へのパスを提供するための特別の規定があったので、私は当面の問題ではなく、一般的なものを解決してきました示した。)

4

あなたは適切な変数を環境を作成して設定する必要があります。

env = Environment(
      CPPPATH=['/home/dja/ocr/include'], 
      LIBPATH=['/home/dja/ocr/lib'], 
      LIBS=['iulib']) 
env.Program('my_executable', Glob('*.c')) 

CPPPATHポイントをCプリプロセッサのパスのリストに(注:3 Pさん)。 LIBPATHは、ライブラリが存在する場所を指します。最後に、LIBSはあなたのプログラムにリンクするライブラリのリストです。

0

LDFLAGS = " - L/blah /"を渡したとき、スコーンの環境変数としてLINKPATH = " - L/blah /"が渡されました。

0

sudo scons --32 --libpath =/home/test/project/stage/lib/--cpppath =/home/test/project/boost/--prefix =/home/test/mongClient/output - -dbg = on --opt = on install

ここで、libpathは非標準の場所からライブラリをリンクするためのものです。 cpppathは、非標準の場所からヘッダファイルをインクルードするためのものです。

関連する問題