問題タブ [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.

0 投票する
1 に答える
6777 参照

variables - Makefile ターゲット内の変数に条件付きで追加する

次のようなGNU Makefileがあります。

つまり、make targetA または make targetB のいずれかを実行します。どちらも非常に似たようなことをしますが、アイテムのリストが異なります。問題は、変数が条件付きで追加されず、常に追加されることです。つまり、出力は常に「item1 itemA itemB」になります。

変数に条件付きで追加するにはどうすればよいですか?

0 投票する
1 に答える
1860 参照

gcc - 1 つの依存関係のコンパイルが失敗した場合、make を強制終了するにはどうすればよいですか?

メイクファイルの関連部分を投稿しました。このメイクファイルを実行するmake allと、コンパイル時にコンパイル エラーが発生しdebugosd.oます。ただし、make は以前にビルドされた を検出したためdebugosd.o、そのままビルドを続行しdialup.otzます。

すべての.oを削除せずに、強制debugosd.o的に古いものにするにはどうすればよいですか?makedebugosd.o

.o ファイルを作成するルールは次のとおりです。

Makefile のスニペットは次のとおりです。

実際、私は問題が何であるかを理解しました。shared1.flw偽のターゲットを使用して再構築を強制していました。makeこれは、エラーに関係なく継続することを余儀なくされていたと思います。

0 投票する
4 に答える
15184 参照

makefile - Makefile で環境変数を「設定解除」することは可能ですか?

私はGNU makeを使用しており、CFLAGS呼び出されたときに環境で定義されていると暴走するビルドシステムを持つプロジェクトにサードパーティのライブラリを含めています。CFLAGS他の理由から、自分の環境で定義したいと思っています。ライブラリのビルドは別のメイクファイルから呼び出されているため、次のように言います。

サードパーティ: $(MAKE) -f Makefile.3rdparty

CFLAGSしかし、サードパーティの Makefile で make を呼び出すときに、それが設定されていないことを確認したいと思います。私が見つけることができる最も近いことは言うことです:

CFLAGS:=

ただし、これはまだCFLAGS環境に設定されたままです。これは単なる空の文字列です。次のように言うような恐ろしいことをすることは別として:

サードパーティ: bash -c "unset CFLAGS; $(MAKE) -f Makefile.3rdparty"

CFLAGSサードパーティのライブラリが呼び出されたときに変数が環境にまったく存在しないように、プライマリ makefile 内から変数を「設定解除」する簡単な方法はありますか?

0 投票する
3 に答える
21792 参照

makefile - GNUに障害を明示的にテストさせるにはどうすればよいですか?

何年もmakeを使用していなかった後、私は再びそれを必要としていることに気付きました。今はgnuバージョンです。自分のやりたいことができるはずなのに、どうしたらいいのかわからなかったり、グーグルなどで答えを見つけたりしていません。

プログラムを何度も実行し、結果をログファイルに保存するテストターゲットを作成しようとしています。一部のテストでは、プログラムが中止されるはずです。残念ながら、私のmakefileは最初のテストで中止され、エラーが発生します。私は次のようなものを持っています:

上記の場合、makeはbad_input1の実行後に終了し、bad_input2の実行には到達しません。

0 投票する
3 に答える
3876 参照

c++ - make/gmakeとの条件付き依存関係

make / gmakeに条件付き依存関係に基づいて動作するように指示する方法はありますか?

私はこのルールを設定しています:

一般的なケースでは、すべての.cppファイルに対応する.hファイルがあります。ただし、いくつかの例外があります。gmakeで「これに依存する」を実現する方法はありますか?それができない場合、このタイプのセットアップのベストプラクティスはありますか?

前もって感謝します; 乾杯!

更新: GCCを使用しています

0 投票する
4 に答える
176121 参照

makefile - 別の Makefile から Makefile を呼び出す方法は?

あるメイクファイルを別のメイクファイルから呼び出すと、予期しない結果が得られます。1 つは と呼ばれ、もう 1 つは/path/to/project/makefileと呼ばれ/path/to/project/gtest-1.4.0/make/Makefileます。私は前者に後者を呼び出させようとしています。/path/to/project/makefile には、

そして、/path/to/project/gtest-1.4.0/make/Makefile私は持っています

以下を発行します。

出力:

ただし、これらのコマンドを発行すると:

そうですか:

わかりません:どちらの場合も、/path/to/project/makefile現在の作業ディレクトリに入っていると言っています。最初のケースでは、実行する作業があるとは考えていません (実行している場合)。2 番目のケースでは、適切なディレクティブを見つけることができます (出力が間違ったディレクトリを探していることを示している場合)。の代わりに でrmコマンドを実行します。/path/to/project/path/to/makefile/gtest-1.4.0/make/

メイクファイルを相互に呼び出すための基本的な何かが欠けていますか? 重大な概念上の誤りを犯したか、それともよくある落とし穴に陥ったか? ディレクトリを効果的に変更し、最初のメイクファイル内から 2 番目のメイクファイルを呼び出すにはどうすればよいですか? 私の理解では、電話make -f <name>するだけで十分だということでした。

これは bash の make/gmake 3.81 です。

0 投票する
1 に答える
1139 参照

dependencies - makeで(gccから)自動生成された依存関係を修正する

私は次のmakefile(フラグメント)を持っています

実行するmake devと、次のように表示されます

src/socket.h(他のすべてが依存するファイル)を変更して実行makeすると、プロジェクト全体が再構築されると期待していましたが、1つのアクションしか出力しません

自動依存関係を正しく生成していると思います。そのため、単にそれらを適切に使用していないように感じます。どこが間違っているのですか?makefile:59:...エラーが手がかりであることは知っていますが、自動生成された依存関係をこれまで使用したことはありません。

前もって感謝します; 乾杯!

0 投票する
6 に答える
3828 参照

makefile - 何もする必要がないときにmakeをシャットダウンするにはどうすればよいですか?

メイクが言うのをやめるにはどうすればいいですmake: Nothing to be done for 'all'.make: 'file' is up to date?何もしていないときはビルドをサイレントにしたいのですが、echoビルドの進行状況を追跡するために呼び出される場所は他にもあるので、このメッセージは混乱しているだけです。私は現在、このようにそれを沈黙させています:

もっと良い方法があるはずだと何かが教えてくれます。何か案は?

編集:

ただし、何かを構築する必要がある場合、コマンドエコーを機能させ続けたいと思います。私が望んでいることの良い例は、の線に沿ったものですが--no-print-directory、選択したメッセージをシャットダウンするための他のフラグが見つかりません。

0 投票する
3 に答える
16382 参照

makefile - オブジェクト .o ファイルのみをコンパイルするように Makefile.am スクリプトで指定するにはどうすればよいですか?

Makefile.am最終的なアプリケーション バイナリの構築を担当する があります。

ctrnnまた、src ディレクトリには、追加の を含むと呼ばれるサブディレクトリがありMakefile.amます。

ここで、トップレベルがサブディレクトリで生成されたオブジェクト ファイルを使用してバイナリをビルドする必要があるという考えで、ctrnn/Makefile.amオブジェクト ファイルのみを生成する必要があります。.oMakefile.amctrnn

これは次のctrnn/Makefile.amとおりです。

このMakefile.amファイルに基づいて、network.o と neuron.o を完成させたいと思います。私はMakefileAutomakeなどを使用してそれに応じて生成していますが、makeファイルを実行しようとすると、何もせず、次のように表示されます:

理由はわかっています。ビルド ターゲットを指定する必要があります。しかしctrnn/Makefile.ambin_PROGRAMS実際のオブジェクト ファイルnetwork.oneuron.o.

(bin_PROGRAMS 名を指定すると、main への未定義の参照が正しく表示されることに注意してください)。

私は何を間違っていますか?

0 投票する
1 に答える
6540 参照

makefile - gnu make、microsoft nmake、および posix 標準 make はどのように似ていますか?

gnu make、microsoft nmake、および posix 標準 make はどのように似ていますか?

明らかに「どのOS?」「どのコンパイラー?」といったものがあります。と「どのリンカ?」ですが、メイクファイル自体の構文、セマンティクス、およびコマンド ライン オプションについて具体的に言及しています。

gnu make のマニュアルに基づいて makefile を作成する場合、注意する必要がある最も重要な移植性の問題は何ですか?