2011-02-25 9 views
1

私はboost 1.46で見つかったboost-buildの最新バージョンを使用しています。私のジャムファイルは、単にBoost.buildを使ってオブジェクトファイルを自動的にインクルードする

exe my_prog : main.cpp ; 

である。しかし、実装ファイル、b.cppがある場合は、オブジェクトb.oが生産されていない自動検出の依存関係にブーストビルドの機能を使用して、a.hb.hに依存するmain.cpp与えられずビルドスクリプトを最小限にして、新しいファイルを追加するたびに調整する必要はありません。ですから、どうすればこのことが自動的にできますか?

私が求めていたものに対して真の意図を反映するように編集されました。

答えて

1

これはうまくいかない理由はありますか?

exe my_prog : main.cpp b.cpp ; 

あなたが望むやり方は、特にブーストビルドの新しい人にとって、苦痛と不快に思えます。さらに、ヘッダーだけが必要な時もありますが、cppは必要ありません。

あなたのコードは完璧に整理し、あなただけの現在のディレクトリ内のファイルが必要されている場合は、すべてのcppファイルを簡単に十分に得ることができます。

exe my_prog : [ glob *.cpp ] ; 

(あなたをできるようになりますグロブに他の引数があります。あなたのエディタが作成するかもしれないバックアップ/リカバリファイルを除外します。そして、子ディレクトリに降りかかるglobの他のバージョンがあります)。

複数の最終実行ファイルが必要な複数のcppファイルがある場合、 libルールを使用して、実行可能ファイルのソースの1つとして使用します。

lib blib : b.cpp ; 
exe my_prog : main.cpp blib ; 
+0

+1、私はそれをするとは思わなかった。私は単体テストのコードを難しい方法でテストしています。複数の実行可能ファイルは、それぞれモジュールをテストします。つまり、プログラムオブジェクトを静的なlibに統合することはちょうど問題です。依存関係を即座に更新する方法を理解したいので、質問を開いたままにしますが、ありがとうございます。 – rcollyer

+0

テストを行っている場合は、Boost-Buildの[テストルール] [http://www.boost.org/doc/tools/build/doc/html/bbv2/builtins/testing.html]を参照する必要があります。コンパイルされるだけでなく、テストアプリケーションも実行されます。 – AFoglia

+0

私は知っています。私は文字通り、コードベースをboost-buildを使うように変更しました。私のmakeスクリプトは脆く、オプションを正しく伝播することができませんでした。私のテストはすべて私が実行し、手作業による出力を検証するものです数学ライブラリの入力のすべての順列を生成するMathematicaの 'Scan'関数)。それはブーストビルドを使用してそれらをセットアップするのにしばらく時間がかかります、そして私は締め切りに逆らっています。 – rcollyer

関連する問題