問題タブ [jam]
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.
jam - JamObjectのルールとディレクトリ
マニュアルには私が間違っていることを実際に書かれているのではないかと思いますが、解決策は実際にはわかりません。この問題は、ビルドする.cファイルと.oファイルが同じディレクトリになく、.cファイルがその場で生成する必要のある.hファイルに自動的に依存している場合に発生します。この問題は、.cファイルと.hファイルの間に依存関係を手動で設定することで解決できる可能性がありますが、それは避けたいと思います。
私は次のディレクトリ構造を持っています:
src/acファイルは次のようになります。
bcファイルは次のようになります。
src/ccファイルは次のようになります。
Jamfileは次のとおりです。
次のコマンドは、boとsrc/bhを正しく作成します。
次のコマンドはsrc/ahを作成しますが、GCCはaoの作成に失敗します。その理由は、acの#includeがsrc / ahに言及しているのに対し、実際には単にahを参照していることは明らかです。
次のコマンドは完全に失敗し、chも作成しません。その理由はおそらく、Jamがccを分析すると、src / chではなくchへの依存関係が生成され、Jamfileにはchを生成するためのルールがないためです。
coを要求する前にsrc/chを生成するように明示的に要求すると、このコマンドは正しくコンパイルされます。
私の意見では、jam src/chは必要ないはずです。ここで何が問題になっていますか?詳細については、特にヘッダーファイルスキャンのセクションで、Jamのマニュアルを確認してください。
答えを受け入れた後に追加
受け入れられた回答の作成者によって提案された構成を少し実験し続けました。結果をここに投稿します。この設定では、次のように入力できます。
そして、アプリケーションはbin/appの下にリンクされます。残念ながら、LOCATE_TARGETを設定するときにUNIXパスを使用する必要がありましたが、これは必ずしも良い方法ではないことを理解しています。
ディレクトリ構造:
ファイルJamfile:
ファイルsrc/main.c
python - Jamfile から Python スクリプトを呼び出す
Jamfile から Python スクリプトを呼び出して、必要なソース ファイルを生成したいと考えています。
Makefile では、次のようになります。
このようなものを Jamfile にアーカイブする最もエレガントな方法は何ですか?
c++ - .v2 拡張子の Boost 日時 Jamfile のビルド
Boost の date_time ライブラリをビルドして Makefile にリンクできるようにしようとしています。私は "libs/date_time/build" にいて、孤独な "Jamfile.v2" を参照しています。jam と入力すると、次のようになります。
Boost のドキュメントに date_time のインストールに関する情報が見つかりません。
ドキュメント内のテキストは次のとおりです。
ありがとう、ジョー
scheme - スキームロード式のジャム HDRPATTERN
プロジェクトをビルドするための jamfiles の一部として、コード生成用のスキーム ファイルを使用しようとしています。
私のスキームファイルがビルドの一部として評価され、コンパイルされた.cppが生成され、誰もがほとんど満足しているという意味で、私はそれを「機能」させています。
ジャムで私は持っています:
ライブラリ somelib : generate.scm ;
UserRule によって generate.scm が実行され、jam の Object ルールに渡される generate.cpp が出力されます。そのビットは機能します。
generate.scm には (load "included.scm") があり、generate.scm に HDRPATTERN と HDRRULE を設定して Jam にそれをインクルードとして認識させたいのですが、必要な egrep 式を理解できません。
これらのタイプのステートメントに一致する egrep 式の書き方を知っている人はいますか?
c++ - Jam で cflags を渡す方法
Jam を介して DLL をコンパイルおよびリンクしようとしています。これはリソースのみの DLL であるため、Jam を介してリンカに /noentry フラグを渡す方法を理解する必要があります。
現在の Jamfile は次のようになっています。
前もって感謝します!
linux - Jamfile - 「知らないルール」 - 読み方
このプロジェクトをコンパイルしようとしています-Linux(ubuntu)で完全にコンパイルされます。しかし、私はそれをWindowsで動作させたいと思っています。そのため、MinGW (Jamplus がインストールされているもの) をインストールし、プロジェクトに必要なすべてのライブラリをインストールしました。それを行った後 (ふぅ!) - このプロジェクトの src をダウンロードし、'./autogen' + './configure -prefix=/mingw' を実行した後、ジャムを実行すると、「不明なルール」の警告が表示されます。Unix コマンドであり、MinGW が理解できないためでしょうか?? それともジャムですか?「UseAutoconf」や「Install Docs」などの行を理解できません - 私は Jam ビルド システムに比較的慣れていないので、助けていただければ幸いです。ありがとう。
ここにjamfileがあります - http://pastebin.com/z3FsMjDt
http://i1268.photobucket.com/albums/jj568/amitahire/jam-minggw.png
また、私が ./autogen を実行したとき - それは言った
configure.ac:144: 警告: AC_LANG_CONFTEST: 本体 /mingw/src/autoconf/26/autoconf2.5-2.68-1/src/autoconf-2.68/lib/autoconf/lang.m4:194 で AC_LANG_SOURCE 呼び出しが検出されませんでした: AC_LANG_CONFTESTから展開されます... /mingw/src/autoconf/26/autoconf2.5-2.68-1/src/autoconf-2.68/lib/autoconf/general.m4:2662: _AC_LINK_IFELSE から展開されます... /mingw/src /autoconf/26/autoconf2.5-2.68-1/src/autoconf-2.68/lib/autoconf/general.m4:2679: AC_LINK_IFELSE から展開... mk/autoconf/np_findlib.m4:3: NP_FINDLIB から展開... configure.ac:144: トップレベル
これらのうちさらに6つ。しかし、私はそれを無視して、問題のない構成の進行を進めました。
編集 - これは問題を解決するようです。
この特定のプロジェクト (私が推測する) は、Jamplus 0.3 でコンパイルされていません。したがって、Jam 2.5 (または Ftjam) で試したところ、コンパイルされました。
jam - 依存関係がビルドを壊す
Haiku Jam を使用してプロジェクトを構築しようとしています。(プロジェクトのコードは、 https://github.com/Andromeda-OS/LLVMでオンラインで入手できます。以下で参照しているコンポーネントがわかるように、少なくともそのプロジェクトのディレクトリ名を確認することをお勧めします。)
llvm-tblgenユーティリティを (再) ビルドしようとしています。libLLVMSupportおよびlibLLVMTableGenllvm-tblgen
にリンク時の依存関係があります。最初にビルドする必要があるように Jam ステートメントを追加すると、Jam はまったくビルドされません。Jam は を出力し、高い詳細レベルで実行している場合でも、他の有用な診断を提供しません。DEPENDS
llvm-tblgen
libLLVMSupport
llvm-tblgen
don't know how to make ./bin/llvm-tblgen/llvm-tblgen
からすべての依存コマンドを削除するllvm-tblgen
と、Jam はファイルをコンパイルします。ただし、が存在しない場合、Jam は最初libLLVMSupport.a
にコンパイルするように指示されていないため、リンカ エラーが発生します。libLLVMSupport
ただし、Jam をlibLLVMSupport
最初にビルドするように指示すると、まったくビルドllvm-tblgen
されません。ポインタはありますか?
macos - アプリケーション構造の作成
Haiku Jam を使用して OS X デスクトップ アプリケーションを作成しようとしています。必要なファイルは次のとおりです。
<appname>.app
(ディレクトリ)<appname>.app/Contents
(ディレクトリ)<appname>.app/Contents/Info.plist
(ファイル)<appname>.app/Contents/MacOS
(ディレクトリ)<appname.app>/Contents/MacOS/<appname>
(実行可能ファイル。これは実際にビルドされたバイナリです)
問題は、これらのファイルとディレクトリを作成するように Jam に指示する適切な Jamfile コードがわからないことです。MkDir
ビルトインとルールを呼び出す「アプリケーション」ルールを作成すると思うかもしれませんFile
。コマンドが欠落しているためにすべてのコマンドを実行するわけではないことを除けば、それが私のアプローチでしたDEPENDS
。残念ながら、ターゲットを必要なファイルとディレクトリに依存さDEPENDS
せるコマンドを追加NOTFILE
すると、奇妙な循環参照エラーが発生したり、ルールが実行されなかったりします (おそらく循環依存が原因です)。どうすればよいですか?
( . make
_ make
_ _ _make
mkdir
cp