問題タブ [gnu-make]
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.
scheduling - GNU make での相互排他的なジョブ スケジューリング?
GNU make を使用して、「--jobs」オプションを使用すると、同時にスケジュールされない一連のターゲットを作成できますか?
バックグラウンド:
これをもう少し具体的にするために、次の形式のメイクファイルを検討してください。
私がする必要がある主なことは、e1、e2、および e3 が同時に処理されないようにすることです。これは、リソースが限られている組み込みデバイスで何らかの作業を行うためです。それらの複数のものが同時に実行されている場合、それらはクラッシュします。p1、p2、および p3 は、任意の e* ジョブを含む任意のものと並行して実行できます。
実際のメイクファイルには、約 10 レベルの深さの依存関係ツリーを持つ数千のターゲットがあることに注意してください。そのため、(a) make を連続して実行する必要がなく、(b) の利点を保持する方法があることを願っています。メイクファイルで依存関係ツリーをエンコードします。
makefile - GNUがファイルを削除するのはなぜですか
テストを実行するための少しハックなmakefileがあります。
それは機能しますが、Makeに今まで見たことのないことをさせます。私のテストは現在壊れており、バスエラーが発生します。Makeは次の出力を提供します。
最後の行が気になります。Makeがそれをするのを見たことがありません。Makeがコンパイルされたテストを削除するのはなぜですか?
注:この例は、簡単にするためにかなり大幅に編集しました。私はいくつかの間違いを導入したかもしれません。
windows - スペースを含むファイル名でGNUMakeを使用する最も信頼できる方法は何ですか?
GNUMakeを使用して、ディレクトリ構造(Windowsファイルシステム上)にCファイルのセットを構築するルールベースのmakefileを実行したいと思います。
ルートディレクトリ、一部のサブディレクトリ、および一部のファイルにはスペースが含まれています。
サンプルファイル:"C:\Documents and Settings\<username>\My Documents\Test Dir\Build Me.c"
ファイルパスにスペースが含まれている場合、GNUMakeは実際には機能しません。この問題を回避するための可能な方法(ファイル名からスペースを削除する、8.3形式を使用する、スペースを?
またはに置き換える\\
など)について読みましたが、どれも完璧ではありません(またはそうですか?)
この問題を解決する特効薬はありますか?
ところで、私はGNUMakeで立ち往生しているので、別のmakeツールを使用することはできません。
c - GNU make %-style パターン ルールのポータブルな同等物
(現在の) 小さな C プロジェクトで単体テストのサポートを組み込むために、Autotools で Check を使用するページの指示に従っています。Checkの代わりにCgreenを使用していますが。
ステップ 9 で問題が発生しました。これにより automake は、GNU make 拡張である「%」スタイルのパターン ルールの使用について警告を発します。
特定の make 規則は次のとおりです。
gnu make 拡張機能に依存しない、このルールを指定する同等の方法があるかどうか疑問に思っています。
makefile - 条件のテストにおける自動変数:GNU Make
私はここで立ち往生しています。2つのmakefileがあります(変更できない要件)
- defs.mk:ソースファイル名とそれらの追加のコンパイルフラグ(標準フラグを除く)が含まれています。例:
Makefile
:すべてのルールが含まれています。
次に、次のようにファイル固有のフラグ(およびオプションのファイル固有のデバッグフラグ)を定義できるように、機能を追加します。
ただし、条件内では自動変数の展開がサポートされていないため、これは機能しません。それを行う他の方法はありますか?
makefile - メイクファイルでエコーを抑制する方法は?
Makefile に次の PHONY ターゲットがあります
ターゲットを実行すると、実行中のコマンドが表示されます
プロンプト> make install
出力は
好きなように出力
c++ - GCC ビルドの問題 (#include_next limits.h)
しようとすると
私のUbuntuマシンのミドルウェアはこれを取得します
これは、limits.h:125 周辺のコンテンツです。
設定してみた
(これは、システムで別の limits.h を見つけた場所です)。すでに libc6-dev をインストールしていますが、その limits.h が別のパッケージによって上書きされている可能性がありますか? 別の -dev パッケージが必要ですか? または、環境変数が必要です。おそらくこれは他の方法で回避できますか?
makefile - 多くのターゲット ディレクトリを持つ GNU make
多くの HTML ファイルの生成を既存の .xml ファイルに統合する必要がありますMakefile
。問題は、HTML ファイルが多くの異なるディレクトリに存在する必要があることです。私の考えは、ソース ファイル (*.st) を対応する html ファイルに変換する暗黙のルールを作成することです。
およびすべての html ファイルに依存するルール
HTML ファイルが builddir にない場合、makeは暗黙のルールを検出しません: *** No rule to make target
. 暗黙のルールをそのように変更すると
見つかりましたが、プロジェクト内のほぼすべてのファイルに対して暗黙のルールを設定する必要があります。GNUマニュアルのImplicit Rule Search Algorithmによると、ルール検索は次のように機能します。make
- ターゲット名t全体をdと呼ばれるディレクトリ部分とnと呼ばれる残りの部分に分割します。たとえば、tが
src/foo.o
の場合、dはsrc/
であり、nはfoo.o
です。- ターゲットの 1 つがtまたはnに一致するすべてのパターン ルールのリストを作成します。ターゲット パターンにスラッシュが含まれている場合は、 tと照合されます。それ以外の場合は、n に対して。
暗黙のルールが見つからないのはなぜですか? また、GNUmake
が使用されていると仮定すると、最も洗練されたソリューションは何でしょうか?
これは my の簡略版ですMakefile
:
makefile - GNU make でエラーと割り込みをトラップするにはどうすればよいですか?
に組み込まれているのと同様にtrap
、 GNUで実装する方法があるかどうか疑問に思っていますか?make
BASH
ユーザーが を押した場合CTRL-C
、またはそれmake
自体が失敗した場合 (ゼロ以外の終了)、特定のターゲットまたはマクロを呼び出したいと思います。