問題タブ [boost-build]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
634 参照

c++ - Boost.BuildとC++を使用したライブラリの依存関係の管理

さまざまなプラットフォームで構築できるプロジェクトを開発したいと思います。プロジェクトコードはC++になりますが、ライブラリを管理するための最良の方法は何ですか?

Boostとその単体テストフレームワークにも依存するため、ビルドシステムとしてbjamを使用する予定です。

2つの依存関係はBoost自体とFLTKです。

ライブラリ管理で頭に浮かぶ可能性は次のとおりです。

  1. ツリー内でサポートされているすべてのプラットフォームのビルドアーティファクト(バイナリ)とヘッダーを含める
  2. ツリー内のすべてのライブラリ依存関係の完全なソースを含め、何らかの方法でそれらを依存関係としてスクリプト化します
  3. node.jsがv8で行うように、1と2の組み合わせ
  4. ライブラリを自分でビルドしてから、LIBcurlが依存関係で行うように、PATHまたは特別なディレクトリにライブラリを配置する必要があることをユーザーに通知します。
  5. * nixビルドツール(つまりlibtool)のmozillaスタイルに依存し、WindowsでビルドするにはMSYSを使用する必要があることをユーザーに伝えます

ここでの最善のアプローチは何ですか?プロジェクトはおそらく今後6か月で数千行を超えることはないでしょうが、後で戻ってすべてを切り替える必要がないように、ここで正しい選択をしたいと思います。

0 投票する
1 に答える
294 参照

boost - Boost.Build 条件変数

Jamfile で変数を設定するにはどうすればよいですか? その値は使用する機能によって異なりますか?

つまり、機能ライブラリを使用しています:

今、値に応じてグローバル変数を設定したいですか?

これはどのように行うことができますか?

0 投票する
1 に答える
79 参照

boost - Boost.Build と実行可能ファイルの機能

<link>static実行可能ファイルをビルドするときに機能を要件セクションに渡すと、正確にはどういう意味ですか?

これは、 と の両方を静的リンケージで構築する必要があることを意味し/libs//my_libraryますか<library>/boost//thread ?

ターゲット/libs//my_library<link>static要件セットがある (この機能のみでビルドされている) 場合、<link>staticこのライブラリに依存するすべてのターゲットの要件を省略した場合 (上記のように)、エラーが発生しますか?

0 投票する
1 に答える
846 参照

boost - Boost.BuildリンクをBoostライブラリに対して

JamfileのBoostライブラリに対してリンクしようとしています:

コンソール出力からライブラリがコンパイルされていることがわかりますが、リンカはエラーを出力します。

エラーが報告されるのはなぜですか?Jamfileのレベルからライブラリにリンクしているのに、ライブラリがリンクされるべきときにリンクされないのはなぜですか?私の理解では、ビルドプロセス全体がJamfilesによって制御されている場合、ライブラリは自動的に静的にリンクされ、コンパイラ固有のフラグは追加されません(Jamfilesの移植性が低下するため)。助けてください。

0 投票する
2 に答える
154 参照

cross-compiling - Boostビルドハウツー:クロスコンパイル環境でのネイティブビルドツール

Boost-buildを使用してプロジェクトをWindows(msvcを使用)からLinux(gccを使用)に移植し、クロスコンパイルされたLinux(これもgccを使用)にさらに移植しています。3つのプラットフォームすべて(Windows、ネイティブLinux、クロスコンパイルされたLinux)を長期的にサポートしたいと考えています。

新しい「usinggcc...」行を追加するだけで、クロスコンパイルの基本的なサポートを追加しました。ただし、このプロジェクトでは、ビルドごとに新しくビルドされるコード生成ビルドツールを使用しています。現在のクロスコンパイルの基本的なサポートでは、これらのビルドツールはクロスビルドされているため、ビルドマシンでは実行されません。要するに、これらは常にネイティブに構築されている必要があり、これをどのように指定するのが最善かわかりません。このシナリオのベストプラクティスはありますか?

Jamfilesの構成などについては確かに詳しく説明できますが、短いメモから始めることにしました;>

助けてくれてありがとう!

0 投票する
1 に答える
511 参照

boost - 依存関係の絶対パスを使用して Jam をブーストする

次のようなジャムファイル階層があります。

ジャムルート:

p1 の Jamfile:

p2 の Jamfile:

したがって、bar2 は相対パスを使用して bar と foo に依存します。

代わりに p2 の Jamfile に次のコマンドを書き込むことができるように、Jamroot に単一のコマンドを書き込むことは可能ですか?

もう相対パスを考える必要がないので、より便利です。コマンドがあることは知っていますが、use-project1) サブディレクトリごとに use-project を作成する必要があります。2) use-project を使用してルート フォルダーを宣言する方法がわかりません...

ありがとう!

0 投票する
1 に答える
154 参照

c++ - ブースト ビルドで Python 拡張機能をビルドする

boost.python を使用して、c++ から Python 拡張機能を構築しようとしています。

私の cpp ファイルは、標準パス (/usr/lib/) の下のライブラリ「libbz2」にある「BZ2_bzopen」という名前の関数を使用します。ただし、指示に従ってブーストビルドを使用して拡張機能をビルドしようとすると、次のエラーが表示されました。

これは、ライブラリにリンクしていないためにエラーが発生したように思えます。これは、「-lbz2」コマンドを使用せずに cpp ファイルをコンパイルした場合とほとんど同じです。

誰でもそれを解決するための助けを提供できますか?

0 投票する
0 に答える
555 参照

c++ - アサートを使用してリリース モードでブーストを構築する

質問のすべてのキーワードに基づいて、これをグーグルで検索するのは非常に難しいようです。

bjam / b2 でブーストをビルドする場合、完全に最適化されたリリース ビルドを取得するにはどうすればよいですか?

これが可能であると仮定して、(--layout=versioned を使用して) 命名を通常のリリース ビルドとは異なるものに調整したいと思います (つまり、ライブラリ名に -a フラグを追加します)。簡単な方法がない場合は、結果のファイルの名前を変更するだけです。

編集:これがLinux(Centos 6.2)であることを言及する必要がありました

0 投票する
1 に答える
411 参照

c++ - bjam、ブースト ビルドの見つけ方

私のマシンには2 つのブースト ディレクトリがあります。/usr/ に 1 つ、/home/user/boost に 1 つ。/home/user/boost でローカル バージョンのみを使用するように bjam に指示するにはどうすればよいですか BOOST_ROOT をそのディレクトリを指すように設定しましたが、bjam はまだ /usr/ のバージョンを使用しようとします。

編集: Jamroot の横にファイル boost-build.jam を使用できることがわかりました。1 行だけで、boost.build の場所を bjam に伝えます。

ただし、プロジェクトごとにこのファイルを作成する必要があるため、これは最適ではありません。もっと簡単な解決策はありますか?

0 投票する
1 に答える
285 参照

clang - bjam および Boost.Build での clangs scan-build の使用

clangs 静的アナライザー scan-build を bjam および Boost.Build と組み合わせて使用​​することは可能ですか? 走ってみた

これは機能しません。scan-build は、レポート ディレクトリにレポートが含まれていないことを報告します。