問題タブ [bjam]
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.
boost - ブーストをビルドしようとしています: bjam を取得できません
bjam を使用して、MinGW と Visual C++ 2010 Express の 2 つの異なるコンパイラを使用してブーストを構築したいと考えています。
問題は、bjam を持っていないことです。Boostディレクトリに見つからず、別の場所からダウンロードしたものは間違ったバージョンでした.
Boost のコードからビルドできるはずですが、どうすればよいでしょうか? build.bat
ディレクトリから起動する必要があると読みましたBOOST_ROOT/tools/jam/src
が、そのディレクトリは存在しません!
ありがとうございました!
- プラットフォーム: Windows7
- コンパイラ: MinGW および Visual C++ 2010 Express
アップデート:
次のコマンドで bjam を取得できました: bootstrap.bat gcc
次に、前のパラメーターで bjam を起動すると、MinGW のライブラリ (.dll と .a) のみが取得されます。
これは、Visual C++ 10 に関して表示されるエラー メッセージの抜粋です。
使用しようとして
bootstrap.bat vc100
います:「不明なツールセット: vc100」というエラーが表示されます
次のいずれかを使用:
bootstrap.bat vc10
または:
bootstrap.bat mingw
「\Microsoft は現時点では予想外でした。」
変更project-config.jam
しても役に立ちませんでした。
それで、私は大きな一歩を踏み出しましたが、vc10はまだ機能していません...
c++ - bjam を使用した m68k のクロスコンパイルブースト
ドキュメントを使用して、次を実行します。
次のエラーが発生します。
user-config は読み取られていますが、無視されているようです ( で確認してください--debug-configuration
) 。
linux - Linux で 1.48 コンパイルをブースト - Bjam を使用して出力ファイルでコンパイラ名を取得しますか?
CentOS 5.6 で Boost 1.48 をコンパイルしようとしています。ファイルは次の形式にする必要があります。
私はこの bjam フラグでコンパイルしています:
gcc
ただし、名前にプレフィックスを追加しません。どうすればこれを修正できますか?
python - distutils を使用して 2 つのモジュールをリンクする
最近、いくつかのコンパイル済み C++ モジュールを操作するときに問題が発生したため、質問を言い換えたいと思います。
「mod1」と「mod2」の 2 つのモジュールがあります。ここに示すように、setup.py で 2 つの異なる「ext_modules」としてコンパイルされます。
しかし、内部では、最初のモジュールが 2 番目のモジュールで使用されるものを定義しているため、'mod2.hpp' は 'mod1.hpp' を含んでいます。
編集:これは正常にコンパイルされますが、その後:
ここで、「Parent」は mod1 で定義され、mod2 で使用されるクラスの名前です。
EDIT2:私が理解していない別の奇妙な動作:
ここでは、最初に mod2 をインポートすると失敗します。しかし、mod1 をインポートした後で agin を実行すると、segfault が発生します。
どちらのモジュールも共有ライブラリとして構築されていますが、私の間違いでなければ、mod1 で定義されたものが必要なため、mod2 を機能させるには mod1 にリンクする必要があります。setuptools/distribute でそのような依存関係を定義することは可能ですか?
何かのようなもの :
私のさまざまな読書から、ブーストの bjam ユーティリティでこのようなことを行うことが可能であるように見えます.
私が試したこと:
- mod2 のソースに「mod1.cpp」を追加します。それは機能します(一種:機能させるにはmod2の前にmod1をインポートする必要があります)が、モジュールを共有オブジェクトとして持つことへの関心を失っています。
回避策:
- mod1をmod2の通常のpythonモジュールとしてインポートしますが、それは私のC ++コード内に余分なpythonの層を置きます
どう思いますか ?
c++ - Windows XPでboost.logがクラッシュするのはなぜですか?
boost.logを使用しています。極端な量のアグロが実際にそれを取得して構築していることを除けば、Windows7とVistaでは問題なく実行されています。
現在、Windows XPでアプリケーションを使用しようとしていますが、boost.logが未処理の例外(Access violaton reading location 0x00000000
)で吹き飛ばされています。
log:mt_nt5::sources::aux::set_severity_level
これは、という名前の静的グローバル変数を設定しようとするメソッドで発生しますg_SeverityLevel
。
で構築することを提案するドキュメントを見つけましたBOOST_LOG_NO_COMPILER_TLS
。これを試しましたが、うまくいきませんでした。
これをさらに読みますが、問題はグローバル変数がとして宣言されている__declspec(thread)
ことにあるようです。これにより、スレッドが静的になります。これは、Vistaより前のOSでのみ問題になります。
boost.logに静的にリンクしているので、プリプロセッサBOOST_LOG_NO_COMPILER_TLS
が認識されない理由がわかりません。
私は何かが足りないのですか?
アップデート:
を使用してライブラリを構築するときに何をしてもbjam
、BOOST_LOG_NO_COMPILER_TLS
フラグが認識されません。私はこのように構築しています:
stage
このフラグがある場合とない場合でビルドした後のフォルダー内の出力の内容を比較しましたが、内容は同じです。
したがって、関連する質問はおそらく次のようになります 。bjamコマンドラインを正しく使用していますか?
c++ - なぜbjamは私の議論を無視しているように見えるのですか?
bjamを使用してboost.libをビルドしようとしていますが、何をしてもBOOST_LOG_NO_COMPILER_TLS
フラグを認識できません。私はこのように構築しています:
フラグを無視していることを確認するために、このフラグがある場合とない場合でコンパイルし、BeyondCompareを使用してステージフォルダーで生成された各ファイルを比較しました。
すべてのlibファイルは同一でした。bjamが私のdefine
フィールドを認識していれば、違いが予想されます。
私はブーストとbjamに慣れていないので、何か間違ったことをしていますか?
c++ - 「複数定義」エラーを発生させずに複数のクラスでライブラリを使用するにはどうすればよいですか
新しい C++ プロジェクトを開始しており、Boost.Build / bjam を使用したいと考えています。
「複数定義」エラーが発生します。おそらく、jam ファイルが正しく記述されていないか、ヘッダーが正しくインクルードされていないか、ライブラリが適切に記述されていないため、調査していません。
main.cpp は libA を使用します。rest.cpp は libA を使用します。
libA はヘッダー ライブラリです。したがって、コンパイラのmain.cppとrest.cppの両方にlibAのヘッダーを含める必要があり、名前空間などについて文句を言います...
Debian で gcc を使用しています。
ここに私のジャムファイルがあります:
Jamroot.jam
Jamfile.jam
私が得るエラーは次の繰り返しです:
boost - Boost: bjam はどのようにライブラリ名を構築するのですか?
ライブラリの名前がどのように構築されているか、ジャムファイルを調べていました。例:libboost_log-mgw46-mt-1_48.dll
最後の部分、リンカに -o パラメータを作成した名前で渡す方法は無視したいと思います。私はいくつかのバージョンを持っており、大きなプロジェクトでリンクすると、プロジェクト ファイルに変更を加える必要があり、それは多くの場所です。
私の願いは、libboost_log.dll を取得することです。名前を変更しましたが、プログラムを実行すると、ファイルが見つからないと
表示されlibboost_log-mgw46-mt-1_48.dll
ます。
c++ - 同時にブーストするために32ビットと64ビットのライブラリを構築しますか?
オプション「--address-model=32,64」は32と64の両方のライブラリをビルドしますか、それとも2つの別々のビルドを実行する必要がありますか?
unit-testing - ブースト1_48何bjam?Boostのbjam不一致バージョンでのエラー
助けてください、私はWindowsXPを持っています、私はhttps://sourceforge.net/projects/boost/files/boost-jam/から3.1.18bjamをダウンロードしました。 QuantLibからサンプルテストを実行すると、エラーは次のようになります。libboost_unit_test_frameworklibが見つかりません
だから私はこのbjamを実行しますが、それは言う:Boostの不一致バージョン。エンジンとコアを構築します。は03.1.18、コアは2011.04-svn
私は何をすべきか?助けてください!