タグ付けされた質問 「gnu-make」

1
このMakefileは、コンパイラを指定しなくてもCプログラムをどのように作成しますか?
私は本「Advanced Linux Programming(2001)」[code]の Makefileを使用していました。GNU makeがMakefileでコンパイラーを指定しなくてもコードを正しくコンパイルするのを見るのは私にとって奇妙でした。レシピなしで焼くようなものです! これはコードの最小バージョンです。 test.c int main(){} メイクファイル all: test そして本当に作品を作ります!これは実行するコマンドです: cc test.c -o test ドキュメントに有用なものが見つかりませんでした。これはどのように可能ですか? PS追加の注意事項:言語さえ指定されていません。test.c利用可能であるため、GNU makeはを使用しccます。存在するtest.cpp場合test.cc(またはがない場合test.c)は、g++(ではなく)を使用しc++ます。
41 linux  make  gcc  gnu-make 

2
「make」エラーコードのリストはどこにありますか?
私が使用してFortranで書かれたプログラムのコンパイルしようとしていますmake(私が持っているMakefileを含むディレクトリにいる間、およびMakefileを、私はコマンドを入力し$ make target、「ターゲット」は、システム固有の目標仕様で、私の中に存在しているMakefileを。として、Iターゲット仕様のさまざまなリビジョンを試してみると、呼び出しを試みるとさまざまなエラーメッセージが表示されることがよくありますmake。 make[1]: Entering directory /bin/sh: line 0: test: too many arguments ./dpp angfrc.f > angfrc.tmp.f /bin/sh: ./dpp: Permission denied make[1]: *** [angfrc.o] Error 126 make[1]: Leaving directory make: *** [cmu60] Error 2 そして make[1]: Entering directory /bin/sh: line 0: test: too many arguments ./dpp -DSTRESS -DMPI -P -D'pointer=integer'-I/opt/mpich_intel/include …

3
コマンドが失敗してもメイクを停止せず、終了ステータスを確認します
コマンドが失敗しても停止しないようにGNU Make 3.81に指示しようとしています(そのため、コマンドの先頭にを付けます-)が、次のコマンドで終了ステータスを確認し、より有益なメッセージを出力したいです。しかし、以下の私のMakefileは失敗します: $ cat Makefile all: -/bin/false ([ $$? -eq 0 ] && echo "success!") || echo "failure!" $ $ make /bin/false make: [all] Error 1 (ignored) ([ $? -eq 0 ] && echo "success!") || echo "failure!" success! 上記のMakefileが「成功!」とエコーするのはなぜですか。「失敗!」の代わりに ? 更新: 受け入れられた回答をフォローし、さらに詳しく説明すると、次のようになります。 failure: @-/bin/false && ([ $$? -eq …
22 make  gnu-make 

3
メイクファイルで指定された依存関係をツリーとして表示する方法は?
問題 メイクファイルの1つ以上のターゲットの依存関係を確認したい。そこで、メイクファイルを解析し、ツリーのような形式(インデント、ascii-art)、またはグラフ(ドット、...)で依存関係を表すことができるプログラムを探しています。 似ている 他の状況でこれを行うプログラムがあります。 pactreeまたはdebtreeは、ascii形式などのツリーの各形式またはdotグラフとしてソフトウェアパッケージの依存関係を表示できます。 gcc -M source_file.c Cソースファイルの依存関係をmakeルールとして表示します。 pstreeは、プロセスツリーのASCII表現を表示します。 進捗 ウェブを検索してもほとんど助けはありませんでした。それは私を試してみるように導いた make --always-make --silent --dry-run some_target | \ grep --extended-regexp 'Considering target file|Trying rule prerequisite' しかし、これを素敵なツリー/グラフとして表現するには、perlまたはpythonでさらに解析コードをハッキングする必要があるようです。そして、この方法で完全で正しいグラフを本当に取得できるかどうかはまだわかりません。 必要条件 いくつかの方法でグラフを制限するのは良いことです(組み込みルールなし、特定のターゲットのみ、深さのみ) -表示可能な形式(「類似」の下のプログラムのように)。 ご質問 これを行うことができるプログラムはありますか? 完全で正しい情報を入手できmake -dnq ...ますか? この情報を取得するより良い方法はありますか? この情報を解析するためのスクリプト/試行はすでに存在しますか?

1
GNU‑MakeをPOSIX Make動作に制限する
Linuxでmake他のMakefileを編集または使用するときに、LinuxがMakefileでGNU‑Make固有の拡張機能の意図しない使用を拒否するようにする既知の方法はありますか?つまり、GNU‑Make makeがPOSIXで指定されたとおりに動作し、GNU‑Make固有の拡張機能を拒否するように制限しますか? .POSIX特別なターゲットは「によると、十分ではありません4.9特殊ビルトインターゲット名(gnu.org)」。manページでは、このためのコマンドラインオプションについては触れられていません。 別のmakeユーティリティを使用することもできます。 — 2018-10-19を更新— 私はまだ私の質問に直接答えを見つけることができますが、ここではこの問題、私はこの質問があった時点で存在していませんでした文書について、少なくとも文書である: ポータブルのMakefileのAチュートリアル(nullprogram.com) 。
12 make  gnu-make 

2
GNU makeの前提条件としてHTTPからのファイルをどのように使用できますか?
私のメイクファイルの前提条件として、World Wide Webからのファイルを使用したいと思います。 local.dat: http://example.org/example.gz curl -s $< | gzip -d | transmogrify >$@ makeが正常に動作するのと同じように、リモートファイルがローカルファイルよりも新しい場合にのみ「変換」します。 example.gzのキャッシュコピーを保持したくありません。ファイルが大きく、生データは必要ありません。できれば、ファイルをダウンロードしないようにします。目標は、makeフラグを使用してこれらのいくつかを並行して処理することです。-j これを解決するきれいな方法は何ですか?いくつかの方法が考えられます。 空のダミーファイルを保管しておき、ターゲットが再作成されるたびに更新する GNU makeの新しいプラグインシステムを使用するプラグイン(私は何も知りません) ローカルファイルシステムにHTTPサーバーをマウントする不可知論的な方法 さらに掘り下げる前に、いくつかのアドバイス、できれば具体的な例をお願いします!

2
Makefileの%記号の意味
私はメイクファイルで遊んでいて、% . oまたは%.cに出くわしました。私が理解したことから、それはすべてのcまたはoファイルを指定します。しかし、なぜこれが機能するのか: %.o: %.c $(CC) -c $^ -o $@ これは機能しません SOURCE := $(wildcard *.c) $(SOURCE:.c=.o): SOURCE $(CC) -c $^ -o $@ どちらの式もすべてのファイルを指定します。では、%。o: makeファイルのシンボルは何をしているのでしょうか?
10 make  gnu-make 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.