問題タブ [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.
c++ - ビルド済みライブラリをプロジェクトに導入するための Boost.Build のベスト プラクティス
現在、プロジェクトに外部のビルド済みライブラリを導入するために、次のように「lib」を使用しています。
プロジェクトで ace_lib_static を適切に使用するには、ブロックをプロジェクトの jamfile にコピーする必要があります。ファイル名、検索ディレクトリ、インクルード ディレクトリ、およびマクロを定義することに注意してください。これは VC 8.0 専用です。他のコンパイラのサポートを追加すると、ブロックはさらに大きくなります。
boost.build に外部のビルド済みライブラリを導入するより良い方法はありますか? 理想的には、プロジェクトの jamfile が参照できる別個の jamfile を用意し、それをプロジェクトで使用できるように数行追加する必要があります。
boost - Boost.Buildが呼び出すg++コマンドラインを確認する方法(1.33.1)
自分のマシンでBoostライブラリをビルドしたときに、インポートライブラリが生成されない理由を理解しようと頭を悩ませています。より具体的には、DLLの構築は正常に機能しますが、以前(つまり、マシンを再インストールする前)にインポートライブラリを正しく生成していました。
いくつかの仕様:
- ブースト1.33.1
- Windows用のg++4.3.3TDM-1リリース
gcc
MSDosコマンドラインプロンプトからのツールセットを使用したビルド- UnxUtils(14-04-03以降)
bjam.exeを呼び出すコマンドラインは次のようになります。
これは以前は素晴らしく機能し、目的のファイルを作成していましboost_thread.lib
たが、現在はそうではありません。私は本当に何が起こっているのかわかりません。リンカがコマンドラインで何を受け取るのか、そしてリンカがそれで何をすべきだと考えているのかを正確に知りたいのです。
ありがとう、
カール
c++ - C ++のメイクファイルジェネレーター?
次のビルド システムを実行します: cmake、jam、bjam も qmake のように makefile を生成しますか? MS Visual C++ が make ファイルを生成するために使用するユーティリティは何ですか?
boost - bjam を使用した簡単なインストール
私はboost.build初心者ですが、bjamはほとんどのコンパイルタスクで非常に使いやすいですが、システムにアプリケーションをインストールするという、本当に簡単なはずのことを行う方法がわかりませんでした。
ツリーに 2 つのファイル (Jamroot 以外) を持つ非常に単純なプロジェクトがあるとします。
hello.cpp : /etc/hello.conf の内容を出力すると言う C++ プログラム
hello.conf : デフォルトの hello.conf
私がやりたいことは次のとおりです。
- システム全体に何もインストールせずに、hello.cpp をコンパイルしてリンクできるようにする
- インストール ターゲットで呼び出された場合 (その場合のみ):
- 実行可能な hello を /usr/bin にコピーします
- hello.conf を /etc にコピーします。
以下は、私が書き始めた bjam です。
私の問題は、ユーザーとして /etc にも /usr/bin にも書き込めないことです。bjam を入力するたびにではなく、明示的にインストール ターゲットを呼び出すときにのみこれを実行したいのです。
構築段階はユーザー権限を使用して実行し、インストール段階は管理者権限を使用して実行する必要があるため、インストール段階と構築段階を分離することは非常に重要です。
boost - C++ boost ライブラリのインストール時に bjam が使用するコマンドを変更する
ブースト ライブラリのインストールを少し遅くしようとしています。短時間に gcc の呼び出しが多すぎて、CPU 温度が限界まで上昇し、システムがクラッシュするためです。
これを /etc/site-config.jam に追加します
ただし、次のエラーが発生します。
$ ./bjam install
/etc/site-config.jam:5: キーワードの構文エラー。
/etc/site-config.jam:5: ロード
ルールでスリープ 10; モジュール pch で g++ が不明です。
/tmp/boost_1_40_0/tools/build/v2/kernel/modules.jam:283: インポート
中 /tmp/boost_1_40_0/tools/build/v2/tools/gcc.jam:19: ロード中
/tmp/boost_1_40_0/tools/build /v2/kernel/modules.jam:283: インポート
/tmp/boost_1_40_0/tools/build/v2/build/toolset.jam:37: toolset.using
/tmp/boost_1_40_0/tools/build/v2/build/project内.jam:874:
project-config を使用中.jam:12: modules.load
/tmp/boost_1_40_0/tools/build/v2/build-system.jam:241 内: load-config
/tmp/boost_1_40_0/tools/build 内/v2/build-system.jam:407: ロード構成ファイル内
/tmp/boost_1_40_0/tools/build/v2/build-system.jam:538: ロード
中 /tmp/boost_1_40_0/tools/build/v2/kernel/modules.jam:283: インポート中
/tmp/boost_1_40_0/tools/build /v2/kernel/bootstrap.jam:138: ブーストビルド
内 /tmp/boost_1_40_0/boost-build.jam:16: モジュールスコープ内
どうすればこれを解決できますか?
c++ - Bjam: 特定のライブラリを無視する
Visual Studio を使用すると、「特定のライブラリを無視」することができます ([プロジェクト プロパティ] > [構成プロパティ] > [リンカー] > [入力] > [特定のライブラリを無視])。
これはプロジェクトで役立つことがわかりました。次に、boost-build (bjam) を使用してそのプロジェクトをビルドしたいのですが、リンカーの動作を再現する必要があります。
bjam でライブラリを無視する機能はありますか?
boost - スレッド例の静的コンパイル
Boost C++ ライブラリを次のようにコンパイルしました。
エラーなし。次に、次のソースをコンパイルしました。
使用:
Boost ライブラリが にあるため、プログラムは正常にコンパイルおよび実行されました/usr/local/lib
。/usr/local/lib
から削除する/etc/ld.so.conf.d/libc.conf
と、次のエラーが発生しました(驚くことではありません):
Thread.cpp
Boost へのリンクを静的にコンパイルするにはどうすればよいですか? 私は次のことを試しました:
次の Boost ライブラリがインストールされています。
次のコンパイル エラーが表示されます。
何か案は?
python - ブーストビルドによるブーストユニットテストフレームワークへのリンク
ブーストビルドを使用して、jamfileでこれを使用してブーストPythonライブラリにリンクできる場合:
プロジェクトmyProject:要件/ boost / python // boost_python;
ブーストテストにリンクするにはどうすればよいですか?ブーストテストライブラリを作成しました。
コードは移植可能であるため、ファイルパスを使用したくありません。ありがとう
Si
linux - bjamを使用した共有ライブラリの構築と使用
ubuntuでbjamを使用して、c ++共有ライブラリを構築し、実行可能ファイルで使用しようとしています。静的としてリンクされないため、共有としてビルドする必要があります(未定義の参照が多数発生します)。それはいいです。
2つの関連する問題:
1)Jamfilesの階層を使用して、私のexeプロジェクト(testServerHub)は共有ライブラリ(pythonManager)に依存しています。exeのJamfileは次のとおりです。
そして、これが私のlib Jamfileです:
'bjam pythonManager'を実行すると、pythonManager共有ライブラリがビルドされ、プロジェクトのlibフォルダーにコピーされます(最後のインストールコマンドによって)。ただし、「bjam test」を実行すると、testServerHubとpythonManagerの両方がビルドされますが、libpythonManager.soはプロジェクトのlibフォルダーにコピーされません。インストールコマンドは実行されません。
2)さて、一時的な回避策として、最初にlibpythonManager.soをビルドしてから、testServerHub実行可能ファイルをビルドします。コンパイルとリンクの両方。実行時に、実行可能ファイルはlibpythonManager.soを見つけることができないことについて文句を言います。ランタイムリンカーは私のプロジェクトのlibフォルダーを知らないので、それほど驚くことではありません。共有ライブラリの特定のディレクトリを検索するように指示するにはどうすればよいですか?または、インストールコマンドが依存ライブラリのビルドに影響を与えない場合、libpythonManager.soを/ usr / local / libにインストールするにはどうすればよいですか?
どうもありがとうございます
Si
c++ - ブースト、bjam、およびシンボリック リンク
bjam でいくつかの Boost ライブラリを生成したところ、多くのシンボリック リンクが取得されました。
date_time の場合:
libboost_date_time-gcc41-mt-1_39.a
libboost_date_time-gcc41-mt-1_39.so -> libboost_date_time-gcc41-mt-1_39.so.1.39.0
libboost_date_time-gcc41-mt-1_39.so.1.39.0
libboost_date_time-gcc41-mt.a -> libboost_date_time-gcc41-mt-1_39.a
libboost_date_time-gcc41-mt.so -> libboost_date_time-gcc41-mt-1_39.so.1.39.0
.a と .so を取得しないのはなぜですか? なぜこれらの 3 つのシンボリック リンク ? また、元のファイルの .so の名前が非常に複雑で、リリース バージョンが 2 回言及されているのはなぜですか?
ただ持つことはできませんか:
libboost_date_time-gcc41-mt-1_39.a libboost_date_time-gcc41-mt-1_39.so
手伝ってくれてありがとう。これらのシンボリック リンクをどうすればよいかわかりません。
注:私はLinuxの初心者です。