問題タブ [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 投票する
2 に答える
1154 参照

c++ - Boost.Build/bjam と Qt

Qt 4.8 プロジェクトをコンパイルするために Boost.Build .jamroot ファイルをセットアップしようとしていますが、moc:ed にする必要がある .ui ファイルと .cpp ファイルを無視しているようです。qt4.jam の内部を調べてみて、さらに ECHO: を追加しましたが、どこを見ればよいかわかりません。

たとえば、uic-generator の run メソッドが呼び出されない (init が呼び出される) ようですが、そうすべきだと思います。

私の jamroot ファイルは次のようになります。

私が得る唯一の出力は次のとおりです。

bjam --debug-configuration を実行すると、qt4.jam は Qt インストールのすべての正しいパスを出力します。

調子はどう?Qt 4.8と互換性がないのでしょうか?それとも私の使い方が悪いだけですか?コードはほぼそのままですが、examples/qt の下のファイルから取得されます。

どのように使用できますか?助けてくれてありがとう。

編集: http://nuwen.net/mingw.htmlの MinGW ディストリビューション 9.0 で gcc 4.7 を使用し、Boost 1.49.0 に付属の Boost.Build を使用します。

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

boost - 複数のBoost.Buildプロジェクト

Boost.Buildエンジンを使用する2つのプロジェクトがあり、次の構造になっています。

プロジェクト2からプロジェクト1のビルドプロセスをトリガーし、さらにプロジェクト1で生成されたダイナミックライブラリにリンクするにはどうすればよいですか?

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

c++ - Boost.build でビルドし、boost にリンクする

ブーストライブラリを使用してプロジェクトを開始しているため、セットアップが機能していないようです:

main.cpp :

Jamfile :

bjam生成されます:

bjam はヘッダーを正しく見つけたようですが、ライブラリは見つけられませんでした。そこで、boost の場所を bjam に伝えようとしました。

Jamfile :

しかし、bjam は以下を生成します:

bjam がブーストを再構築したいことを理解していないため、 で Jamfile を探してい/usr/lib/boostます。

足りないものはありますか?リンク先の不足しているライブラリがどこにあるかをbjamに伝えるにはどうすればよいですか?

数回前に、私は

しかし、これを Boost.build v2 に変換する方法がわかりません。

ありがとう。

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

c++ - OpenMP で CPPUNIT_ASSERT_MESSAGE がエラーを引き起こすのはなぜですか?

運用システム=Ubuntu。

bjam の使用法 = TRUE。

OpenMP を使用して単体テスト システムを最適化したいと考えています。

bjam スクリプト ファイル:

私のコードの一部:

テスト システムを起動すると、次のエラーで終了します。

CPPUNIT_ASSERT_MESSAGE: 行にコメントします。

そして、それは私が必要とする方法で機能します。しかし、間違った結果の場合に情報を出力するには、CPPUNIT_ASSERT_MESSAGE が必要です。CPPUNIT_ASSERT_MESSAGE がエラーを引き起こす理由と、これらのエラーを取り除くにはどうすればよいですか。

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

boost - Boost.Build 再構築

アプリを再ビルドしても、以前にビルドされた実行可能ファイルは削除されず、コンパイル エラーが発生した場合、スクリプトは実行を継続し、実際には更新されていない実行可能ファイルを実行します。ビルド プロセスが行われる前に実行可能ファイルを削除するにはどうすればよいですか? コンパイルアクションでこれを行いたい:

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

bjam - Jamroot へのパスの boost-build/bjam 定数

プロジェクト内の別の Jamfile で定数として使用するために、Jamroot ファイルの場所を取得する方法はありますか?

現在、Jamroot に次のようなものがあります。

そして後で、プロジェクトのルートからのパスを含むヘッダーを含めることができるように、別の Jamfile でこのようなことを行うかもしれません。

このプロジェクトを他の人と共有する場合、他の人とまったく同じ場所に保管するか$HOME、Jamroot を更新する必要があるため、特に満足できません。

私は、この特定のインクルードを行うスマートな方法に興味があります (定数を使用する無知な初心者の方法ではなく)。しかし、私が尋ねた方法 (Jamroot の場所を定数にすること) で問題を解決することにも興味があります。これは他の方法でも役立つ可能性があるからです。

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

filenames - ブースト ビルド - 同名のソース

この Boost.Build をビルドすると、作成が試行されます

しかし失敗します。これを自動的に解決するにはどうすればよいですか? FAQ itemを読みましたが、クラス名が同じで名前空間が異なる場合、手動で修正する必要があるため、解決策が気に入りません。Boost.Build を自動的にオブジェクト ファイル名にディレクトリのプレフィックスを付けることができますか?

または、ソース ディレクトリ ツリーを複製しますか?

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

boost - Boost の bjam は、ビルドが完了する前にテストを実行しています

私は bjam で構築しているかなり単純な Boost.Python 拡張機能を持っています。問題は、物事が起こる順序が意味をなさないことであり、それを修正する方法がわかりません。

私のプロジェクトは、Jamroot を含むルート ディレクトリと、Jamfile、C++ ファイル、ヘッダー ファイル、および Python スクリプトを含む単一のプロジェクト サブディレクトリで構成されています。

ルートには、このような Jamroot ファイルがあり、例とドキュメントから大部分がかき集められています。他のサブディレクトリに存在するいくつかのプロジェクト間でこれを共有したいので、プロジェクトの Jamfile とは別のものです。

次に、「hello_world」プロジェクト (罪のない人を保護するために名前を変更) を含むサブディレクトリがあり、Jamfile が含まれています。

その「convenient_copy」は確かに便利ですが、残念ながらそれに関するドキュメントはあまり見つかりませんでした。

とにかく、アイデアは、「hello_world」プロジェクト ディレクトリにいる間、コードを変更し、定期的に「bjam」と入力するというものです。これには、Python 拡張機能をビルドしてから test_hello_world_ext.py ファイルを実行する効果があります。このファイルは、'import hello_world_ext' を実行して、拡張機能が正しくビルドされたことをテストし、その後、いくつかの簡単な単体テストを実行します。それらがすべて成功すると、bjam は成功を報告します。

問題は、bjam が'convenient_copy' ルールを実行する前に Python テストを実行することがあるようです。これは、拡張機能の以前のバージョンでテストを実行し、新しいバージョンで上書きすることを意味します。これは、頻繁に bjam を 2 回実行しなければならないことを意味します。実際、2 回目の bjam は、実際に何かを実行するため、何かが古くなっていることを認識します。3 回目以降は、さらにソースを変更するまで何もしません。これは、依存関係が正しくない場合の古典的な double-make 問題のようなものです。

これに関する主な問題は、成功したビルドが失敗することが多く (既存の拡張機能が悪かったため)、悪いビルドが成功したと表示されることです。実際、この行動に気付くのに数週間かかりました。おそらく偶然ではなく、気が狂ってしまうと思ったのとほぼ同時に...

また、これは OS X よりも Linux で頻繁に行われるようですが、完全にはわかりません。私は両方の環境にかなり均等に時間を割いています。

また、bjam の「jamfile」構文が非常にわかりにくいと感じるのは私だけでしょうか? 私が単に理解していない、または適切なドキュメントを見つけることができない、ボンネットの下で多くのことが起こっています。代わりにmakeまたはSConsを喜んで使用しますが、あちこちで壊れた例が原因で、それらを機能させることができませんでした。私を本当に混乱させているのは、私のファイルに取り掛かる前に、bjam がどのように多くの他のターゲットを構築するかということです。私は GNU Make と SCons に精通しているので、bjam を放棄して代わりにそれらのいずれかを使用する価値はありますか?

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

boost - bjam のターゲットを理解し、新しいターゲットを指定する方法は?

bjam でターゲットを指定して呼び出す方法を理解するのに問題があります。これは、単に全体を実行するのではなく、ビルド プロセスのさまざまな側面に対応する (実際には Makefile から) ビルドするためのコマンド ライン ターゲットを bjam に提供したいということです。

たとえば、現在「bjam」と入力すると、停止して Python 拡張機能がビルドされ、単体テスト ファイルが実行され、別の「main」実行可能ファイルも作成されます。各ステップを実行するカスタム ルールがあり、Jamfile にはそれらを順番にリストするだけです。

私の Jamroot (1 つ上のディレクトリ) には、これらのルールが定義されています。不完全なファイルは次のとおりです。

ただし、次の bjam の呼び出しでは、実行してもらいたいことが実行されないことに気付きました。

^^^ しかし、インストール ルールが実行されていないため、バイナリは Jamfile ディレクトリにコピーされません。

奇妙なことに、何かを行うターゲットがいくつかありますが、常に私が期待するものとは限りません:

Jamfile ディレクトリにバイナリが作成されました。

mainターゲットはどこから来たのですか?定義してなかった…

別の奇妙なもの:

^^^ example_ext.so を作成しましたが、Jamfile の場所にコピーしませんでした。

^^^ .so ファイルを作成してコピーしましたが、便利なコピーを呼び出して libboost_python.so ファイルを取り込みませんでした。

ここで何が起こっているのか本当にわかりません。bjam のドキュメントは、本当に深刻な問題を引き起こしています。ターゲットを詳細に説明しますが、コマンド ラインから bjam を呼び出すコンテキストではなく、ルールのコンテキストで説明します。疑似ターゲットと「生成」についての言及に出くわしましたが、単純なユースケースである必要があると私が感じるには、あまりにも複雑に思えました。「バインド」メカニズムについての言及もありましたが、ドキュメントには=$(BINDRULE[1])=意味がありません。

NOTFILEエイリアスにも出くわしexplicitましたが、正しい軌道に乗っているかどうか確信が持てず、決定的なことは何もできませんでした.

bjam でカスタム ターゲットを作成する方法の良い例はありますか? それとも、意図しない方法で bjam を使用しようとしているだけですか?

0 投票する
4 に答える
4731 参照

c++ - Boost.Build の実行時に「バッチ再帰がスタック制限を超えています」についてはどうすればよいですか?

64ビットのWin7を使用しています。

最新の Boost ソースをダウンロードしました。バイナリを収集するには、Boost.Build プロセスを通過する必要があります。公式 Web サイトから最新の Boost.Build も./bootstrap取得しましたが、実行するとエラーが発生しました。

私はi5、8 GBのメモリを持っています。

GCC (G++) のブースト用のバイナリを取得する他の方法はありますか。Boostpro があることは知っていますが、VS バイナリしか提供できません。