2009-08-26 9 views
5

私はVisual Studio 2008を使用しており、C++でいくつかのことを書いています。 Boostライブラリを使用しています(つまり、ではなく、ヘッダーのみ)。ブーストリンク、Visual Studioとバージョンコントロール

したがって、Boostにリンクするには、プロジェクトの「追加のリンカーパス」設定にBoostバイナリにディレクトリを追加する必要があります。

ただし、これはソース管理と競合しませんか?私がプロジェクトファイルをチェックインすると、のマイコンピュータのBoostライブラリへの絶対パスは含まれていませんか?

私は明らかにこれが起こりたくないので、どうすればいいですか? Boostディレクトリを "Visual C++ Directories/Libraries"に追加するだけでは機能しません。

+1

ところで、ヘッダファイルについても同様です。 – gimpf

答えて

4

"Visual C++ディレクトリ"にブーストパスを追加するになります。 インクルードパス<Full path here>\boost_1_39_0(最後にブーストなし)を追加する必要があります。
とライブラリパス<Full path here>\boost_1_39_0\bin.v2\lib(bin.v2は異なる場合があります)。

個人的には、ソースコントロールにブーストソースを保存し、プロジェクト設定で相対パスを使用します。

+0

それだけでなく、実際には動作しません。欠点はそれがもはや自己完結型ではなく、すなわちポイントアンドクリック構成を必要とすることだけである。私にとってはこれはショーストッパーなので、サードパーティのライブラリもチェックインしています。あるいは、ビルドスクリプト自体を変更することもできます。しかし、VS IDEには独自の問題があります。 – gimpf

1

サードパーティのライブラリを含むリポジトリを使用し、svn:externalsを使用してプロジェクトのベースディレクトリに必要な部分をチェックアウトし、最後にプロジェクトファイルのインクルードディレクトリとライブラリディレクトリの相対パスを使用します。うまくいきますが、あなたのハードディスク上のいくつかのブーストコピーで終わることができるという欠点しかありません。ジャンクション(Windows版のシンボリックリンクはディレクトリのみで、少なくともWin2kからは動作しますが、NTについてはわかりません)を使用すると、無駄なスペースを取り除くことができます。

0

私はいくつかのものにはBOOST_ROOTという環境変数を使用していますが、問題なく動作します。手動で作成し、プロジェクトファイルのパスを "$(BOOST_ROOT)\include"と "$(BOOST_ROOT)\lib"(またはレイアウトが使用するもの)に設定する必要があります。誰もが自分のマシンにBOOST_ROOTを設定してBoostをインストールする必要があります。

+0

この方法を使用する場合は、プロジェクトごとに異なる同時ブーストバージョンを使用する可能性があることに注意してください(ビジュアルスタジオ全体の構成にも問題があります)。 – gimpf

+0

Boostのレイアウトは、\ libディレクトリ(バージョンはファイル名)にあり、各バージョンには\ include(つまり\ include \ boost-1.39 \)というディレクトリがあります。プロジェクトファイルには、 "$(BOOST_ROOT)\ include \ boost-1.39"と "$(BOOST_ROOT)\ lib"が含まれています。 –

1

ソースツリーのプロジェクトツリーでプロジェクトで使用されているすべての3rdパーティーヘッダーとライブラリをソース管理に入れます。つまり、ソースを持つライブラリのバージョンを追跡します。

次に、プロジェクトプロパティのインクルードとソースディレクトリを参照します。私たちはVisual C++ Directoriesを使用しません。これは、異なる開発者システム上のファイルの場所にあまり依存しないため、ライブラリのバージョンを追跡できないためです。

唯一の例外は、vc6で開発する場合のプラットフォームSDKです。

恥知らずのプラグ:私たちは今CMakeでvcプロジェクトの設定を管理しています。大規模なプロジェクトでは、これらのことをもっと簡単に行うことができます。

1

VSには、プロジェクトごとにではなく、コンピュータごとにBoostについて説明します。プロジェクト特有ではないDirectXやその他のライブラリとまったく同じです。ブーストは複数のプロジェクトで使用されていると仮定することは合理的だと思います。

実装の詳細(パッチ適用など)に慣れていない限り、私たちはプロジェクトのSCMで外部ライブラリのソースを追跡しません。 boost、directx、windows sdkの場合は、それぞれのインストーラを実行して、dev環境をセットアップするときにVC++ Directoriesを設定する必要があります。

+4

ブーストのバージョンを更新した後、どのようにプロジェクトの古いバージョンをビルドしますか? – iain