私たちの会社でも同様の問題に直面しています。ビルド環境でのブーストバージョンの管理は決して簡単ではありません。10人以上の開発者がいて、すべてが独自のシステムでコーディングしているため、何らかの自動化が必要になります。
まず、ブーストのような大きなライブラリのコピーをSVNやSCMシステムに保存するのは良い考えではないと思います。ブーストでコードを変更する場合を除いて、これらのシステムはそのために設計されたものではありません。しかし、あなたがそれをしていないと仮定しましょう。
これが私たちが今それを管理する方法です、多くの異なる方法を試した後、これは私たちにとって最もうまくいきます。
使用するBoostのバージョンごとに、ツリー全体(解凍済み)をファイルサーバーに配置し、アーキテクチャ/コンパイラの組み合わせごとに1つずつ、コンパイル済みライブラリを配置するサブディレクトリを追加します。これらのツリーのコピーをすべてのビルドシステムに保持し、グローバルシステム環境で次のような変数を追加します。
BOOST_1_48=C:\boost\1.48 # Windows environment var
また
BOOST_1_48=/usr/local/boost/1.48 # Linux environment var, e.g. in /etc/profile.d/boost.sh
このディレクトリには、ブーストツリー(boost / *。hpp)と追加されたプリコンパイル済みライブラリ(例:lib / win / x64 / msvc2010 / libboost_system * .lib、...)が含まれています。
すべてのビルド構成(vsソリューション、vsプロパティファイル、gnu makefiles、...)は、内部変数を定義し、次のような環境変数をインポートします。
BOOSTROOT=$(BOOST_1_48) # e.g. in a Makefile, or an included Makefile
さらにビルドルールはすべて、インクルードパスとライブラリ検索パスを定義するためにBOOSTROOT設定を使用します。
CXXFLAGS += -I$(BOOSTROOT)
LFLAGS += -L$(BOOSTROOT)/lib/linux/x64/ubuntu/precise
LFLAGS += -lboost_date_time
Boostのローカルコピーを保持する理由は、コンパイル速度です。それはかなりのディスクスペース、特にコンパイルされたライブラリを消費しますが、ストレージは安価であり、開発者がコードのコンパイルに多くの時間を失うことはありません。さらに、これは一度だけコピーする必要があります。
グローバル環境変数を使用する理由は、ビルド構成をあるシステムから別のシステムに転送できるため、SCMシステムに安全にチェックインできるためです。
少しスムーズにするために、地球環境のコピーと設定を処理する小さなツールを開発しました。CLIを使用すると、これをビルドプロセスに含めることもできます。
作業環境が異なれば、ルールや文化も異なりますが、私は多くのことを試し、最終的に、ある種の規則を定義することにしました。多分私たちのものはあなたにインスピレーションを与えることができます...