ビルドされたプロセスにBoostライブラリを含めるためのベストプラクティスは何ですか?
説明のために、私たちのプロジェクトがBoostの正規表現を利用し、次のようにコンパイルされていると仮定します。
g++ -lboost_regex -o main main.cpp
…これは、次のものだけを含むMakefileを作成できることを意味します。
LDFLAGS+=-lboost_regex
残念ながら、これは私のシステムでは機能しません。
$ make main
ld: library not found for -lboost_regex
collect2: error: ld returned 1 exit status
ライブラリパスを指定しなかったので、これは理解できます。Boostは、コンパイラが見つけられない場所にインストールされます。
もちろん、Makefileにそのパスをハードコーディングしたくありません。そうしないと、プロジェクトを他のマシンでビルドできません。
1つの解決策は設定することですLD_LIBRARY_PATH
が、これはお勧めできません。
通常のライブラリの「実際の」ソリューションはpkg-config
、たとえば次のように使用することです。
LDFLAGS+=$(shell pkg-config --libs sqlite3)
…これは、の線に沿った何かに解決されます-L/path/to/sqlite/lib -lsqlite3
。
残念ながら、Boostはまだをサポートしていませんpkg-config
。
これは私にジレンマを残します。Boostライブラリのインストールパスを決定する普遍的な方法はないようです。他のプロジェクトはこれをどのように処理しますか?
(誰かが環境変数を提案しましたBOOST_ROOT
が、それも普遍的に存在するようには見えません。bashrc/ profileファイルの1つに手動で設定する必要があります。)