2016-05-20 6 views
0

私は、より大きなプロジェクトを組み込みLinuxシステム(Debian 8.3 ARM)に移植しようとしています。このプロジェクトでは、システムのSynaptic(1.55 vs 1.58)より新しいBoostライブラリが必要なので、ソースからBoostをビルドする必要があります。通常、私は最新のバージョンを選びます.2週間前にダウンロードしたときの1.60でした(現在は1.61です)。Debian 8.3でのBoostユニットテストフレームワークの構築ARM

プロジェクトにはboost_unit_test_frameworkが必要なテストケースが含まれています。私はそれ(解凍したソースディレクトリからの)呼び出しが

./bootstrap.sh --prefix=/home/tinyt/b160_clang \ 
--with-libraries=system,thread,<more lbraries>,\ 
boost_unit_test_framework,test_exec_monitor 
./b2 install toolset=clang 

、それは(改行はコマンドの一部ではありませんが、読みやすくするためにここに挿入~/b160_clangで1.60を後押し私を与えるべきであるべき取るブーストドキュメントから )。 問題は、b2がライブラリーとしてboost_unit_test_frameworkまたはunit_test_frameworkを認識せず、したがってブーストを構築しないということです。 ライブラリを省略しただけでは、私のサブセットのブーストライブラリが構築されますが、boost_unit_test_frameworkの要件を満たしていないためCMakeが失敗します。

私に含めるべき他のライブラリはありますか? ライブラリーの配列は重要ですか? 途中でarにリンクする必要がありますか?

CMakeは一般的にはOKのようですが、プロジェクトのビルド環境はx86 Debian 8.3マシンです。違いは、ここに完全インストールのための十分なスペースがあることです。

clang 3.5とCMake 3.0.2を実行すると、機能的なデスクトップシステムと同じです。 ほとんどの場合、埋め込みターゲットシステムには、ブーストライブラリ全体を構築するための十分な領域がなく、プロジェクトアプリケーションのための空き領域があります。

boost_unit_test_frameworkの依存関係がもうありませんか? インストール用にライブラリを指定する方法がありますか? ユニットテストフレームワークはヘッダーのみであるため、手動でヘッダーをコピーできますか?

感謝の意を表します。ありがとう!

編集:

私はちょうど私が構築したいすべてのライブラリのためのbjam --prefix=/... --with-<...>を実行しようとしました。出力は前と同じであった。

error: wrong library name 'boost_unit_test_framework' in the --with-<library> option. 

私は接頭辞boost_を省略した場合と同じで真です。

+0

実行 'bjam --show-libraries'は、「テスト」です。ライブラリ名に使用してみてください。 –

答えて

1

不正な名前を使用してライブラリを指定しています。

あなたmay run

bjam --show-libraries 

コンパイルが必要なライブラリの名前のリストを取得します。

たとえば、ブースト1。つまり、私はtestという名前のライブラリがある見ることができるの検査

...updated 1 target... 
The following libraries require building: 
    - atomic 
    - chrono 
    - container 
    - context 
    - coroutine 
    - date_time 
    - exception 
    - filesystem 
    - graph 
    - graph_parallel 
    - iostreams 
    - locale 
    - log 
    - math 
    - mpi 
    - program_options 
    - python 
    - random 
    - regex 
    - serialization 
    - signals 
    - system 
    - test 
    - thread 
    - timer 
    - wave 

:58は、私は次の(トリミング)出力を得ます。それがあなたが探しているものです。そのため、ビルドを実行するためのコマンド・ラインは、含まれている必要があります:私は記載されているライブラリ名のいずれかが表示さ

--with-libraries=system,thread,<more libraries>,test 
+0

これは、ライブラリが 'libboost_unit_test_framework'と呼ばれているにもかかわらず、CMakeの依存関係' boost_unit_test_framework'を追加しなければならないと心配しました。システムの場合は、CMakeで 'system'を指定し、ブートストラップリストをブーストする必要があります。ファイルは' libboost_system'と呼ばれます。 魅力的に動作します。点検の指示もありがとう! – starturtle

0

ブーストbcpを見てください。 bcpを使用すると、実際にブーストのどの部分を指定し、それらを "ビルド"するだけかを指定できます。 Bcpでは、これらの部分を個別の名前空間にラップすることができます。これは、使用例に応じて便利です。

+0

ありがとう!私が読んだことから、bcpはboostソースからビルドする必要があります。ビルドを増やすことなく(ビルドという言葉を引用したのですが)それを行うことはできますか?あるいは、x86上でARM用のライブラリソースを作成し、それらを移動して、 "フル"ブーストライブラリと同じように構築することをお勧めしますか? – starturtle

関連する問題