14

ブーストのサブセットをセットアップし、bjam を使用して適切にコンパイルしようとしていますが、探している結果が得られません。ブースト 1.37.0 を使用して Windows で作業しています。

ライブラリ smart_ptr とファイルシステムをビルド/インストールしたいとしましょう。私は意図的にヘッダーのみのライブラリと、ライブラリをコンパイルする必要がある 1 つのライブラリを選択しました。bjam を使用して完全なブースト インストールを構築した場合 (つまり、--with-libraryX を指定しない場合) に似たディレクトリ構造にそれらを構築したいのですが、もちろん、興味のないすべてのライブラリは含まれていません。 .

私の最初のアプローチは、bjam で --with-filesystem --with-smart_ptr を使用することでしたが、smart_ptr を認識しなかったようです (smartptr と smart-ptr を試してみましたが成功しませんでした)。これは、ヘッダーのみのライブラリであるためだと思います。

私がそれを削除し、 --with-filesystem だけを持っていたとき、すべてのライブラリヘッダーファイルをインストールパスにコピーし、ファイルシステムのライブラリのみを構築するように見えました。ライブラリのビルド動作は私が望んでいたものでしたが、boost ディレクトリにインストールすることに興味のないライブラリのヘッダー ファイルが大量にありました。

私の 2 番目のアプローチは、bcp を使用して関連するプロジェクトをコピーすることでした。これは、私が関心のあるプロジェクト (およびその依存関係) のみを取得したという意味でうまくいきました。ただし、コピーされたライブラリを構築するためのメイク ファイルは提供されませんでした。これは、ヘッダーのみではないすべてのライブラリのプロジェクト ファイルをセットアップし、それらを手動でビルドする必要があることを意味します。

だから私の質問は基本的に、私が興味を持っているライブラリのヘッダーのみをコピーし、私が興味を持っている非ヘッダーのみのライブラリのライブラリファイルのみを構築するブーストを選択的に構築する方法はありますか?コースによる)?

これにはおそらく手動/スクリプトベースのソリューションがたくさんありますが、新しいライブラリを追加したり、新しいブーストバージョンにアップグレードしたりするのは非常に簡単なので、bjam のみを使用して何かを実行することができれば、私にとってははるかに便利です。

編集:最初のアプローチの完全なコマンドラインを追加しました:

bjam install --prefix=c:\temp\boostsmall 
   --build-dir=C:\temp\boostsmalltemp --layout=system 
   --with-filesystem variant=debug link=static threading=multi
   runtime-link=static

scoped_ptr を smart_ptr に変更

4

2 に答える 2

6

解決しました。

bcp ソリューションにはプロジェクト用の make ファイルがありましたが、実行するためにすべてのライブラリをコピーした場所に tools ディレクトリと boost ディレクトリのルートをコピーする必要がありました。

于 2009-01-13T16:04:51.090 に答える
2

素晴らしい質問です。これは私が最近なんとか理解できた問題だと思います。

個別のコンパイルが必要なものを含め、完全な Boost ライブラリが既にインストールされています。

次の手順を使用して、作業していた特定のアプリケーション用の Boost ライブラリ (正規表現) のサブセットを作成することができました。

  1. 最初に、bcp 実行可能ファイルが最初にインストールされていることを確認します。Boost ルート フォルダーで、tools/bcp フォルダーに移動し、ここで bjam.exe を実行します。私の場合、これにより bcp 実行可能ファイルが [Boost path]\bin.v2\tools\bcp\msvc-10.0\release\link-static ディレクトリに作成されました。

  2. 次に、Boost サブセットを配置するフォルダーを作成します。これは、作業中の Visual Studio プロジェクトのフォルダーである可能性があります。

  3. 作成した bcp exectubale を実行し、含めたいライブラリと、boost ルート ディレクトリと宛先フォルダーの場所を必ず含めます。必要な Boost コンポーネント (正規表現用など) が宛先フォルダーにどのように含まれているかを確認します。

    bcp.exe regex --boost="C:\Program Files\boost_1_55_0\boost_1_55_0" C:\Projects\RegexProject\BoostLite

  4. Visual Studio プロジェクトで、作成された「Boost lite」フォルダーを指すように追加のインクルード ディレクトリとライブラリを設定します。

  5. 最後に 1 つ (前に説明したと思います)、通常の Boost フォルダーのセットアップに移動し、サブセット バージョンに必要なすべての lib ファイルを含む必要な stage/lib フォルダーをコピーして、ここにコピーする必要がありました。私の場合はlibファイル。

これがうまくいくことがわかりました。他の人の経験からのフィードバックをいただければ幸いです。

同じことを説明しているブログ投稿がここにあります

于 2014-06-11T08:12:03.293 に答える