質問

ある日、システム管理者の先生が、「make」の使い方を学ぶべきだと言いました。「make」はコンパイルを引き起こすだけの他の多くのことに使えるからです。

それについて長く話す機会はありませんでした。何か良い例はありますか?

おまけに、このツールは廃止されたのではありませんか? (コンパイル目的などの) 最新の代替ツールは何ですか?

役に立ちましたか?

解決

Make を使用すると、実行したいコマンドを実行できます。これは依存関係のチェックが必要なアクティビティに使用するのが最適ですが、電子メールのチェック、サーバーの再起動、バックアップの作成などに make を使用できない理由はありません。

Ant、NAnt、msbuild が最新の代替手段であると考えられていますが、plain-old-make は Java や .NET を使用しない環境で依然として広く使用されています。

他のヒント

make をコンパイル以外にも使用できる優れた機能の 1 つは LaTeX です。BibTex や目次を使用するときに .tex ファイルを何度も再解釈する必要があるため、LaTeX を使用して本格的な作業を行っている場合は、make が非常に便利であることがわかります。

Make は決して非推奨ではありません。同じことを行うさまざまな方法 (Windows ではバッチ ファイル、Linux ではシェル スクリプト) はありますが、私の意見では、これが最善の方法です。

このツールは廃止されたのではないでしょうか

何?!いや、少しでもありません。私は Linux を使用しているので、自分が普通の人ではないことはわかっていますが、ほぼ毎日 Linux を使用しています。Linux 開発者は何千人もいると思います。 する 毎日使ってください。

という記事を見た記憶があります スラッシュドット 数年前、make を使用して Linux のブート シーケンスを最適化する手法について説明しました。

編集:

IBMの記事はこちら 原理を説明しています。

Make は、 トポロジカルソート, つまり、大量のものが与えられ、あるものが別のものの前にあるという一連の要件が与えられた場合、すべての要件が満たされるようにすべてのものを順序付ける方法を見つけます。トポロジカルソートの一般的な用途の 1 つは、物 (プログラム、ドキュメント、配布 tarball など) の構築ですが、他にも用途があります。サーバー間の依存関係 (NFS、NIS、DNS など) を含む、データ センター内のサーバーごとに 1 つのエントリを含む Makefile を作成できます。これにより、停電後にコンピューターの電源を入れる順序を make から知ることができます。停電の前にどのような順序で電源を切るか。これを使用して、単一サーバー上でサービスを開始する順序を決定できます。朝、服を着る順番を決めるのに使えます。A が B の前に来るという形式の一連の特定の要件を満たす、一連の物事やタスクの順序を見つける必要がある問題は、make で解決できる可能性があります。

私がこれまで見た中で最もランダムな使用法は、init スクリプトの bash の代わりに make が使用されていることです。 BCCD. 。最悪の瞬間を乗り越えれば、実際にはきちんと機能しました...

make は、力強さを加えたシェル スクリプトと考えてください。

まあ、.Net の世界では下火になりつつあるとはいえ、UNIX ツールの「make」は今でもよく使われているはずです。最近では、MSBUILD、Ant、nAnt などのツールを使用する人が増えているかもしれませんが、これらは基本的に、異なるファイル構文で単に「作成」するだけです。基本的なコンセプトは同じです。

Make ツールは、出力ファイルに処理される入力ファイルがある場合に便利です。レポートは MSWord で作成し、PDF として配布しますか?-- make を使用して PDF を生成します。

crontabによる設定ファイルの変更、 もし 必要です。

例があります postfix マップ、および squid 外部テーブル。

/etc/postfix/Makefile の例:

POSTMAP=/usr/sbin/postmap
POSTFIX=/usr/sbin/postfix

HASHES=transport access virtual canonical relocated annoying_senders
BTREES=clients_welcome

HASHES_DB=${HASHES:=.db}
BTREES_DB=${BTREES:=.db}

all: ${BTREES_DB} ${HASHES_DB} aliases.db
    echo \= Done

${HASHES_DB}: %.db: %
    echo . Rebuilding $< hash...
    ${POSTMAP} $<

${BTREES_DB}: %.db: %
    echo . Rebuilding $< btree...
    ${POSTMAP} $<

aliases.db: aliases
    echo . Rebuilding aliases...
    /usr/bin/newaliases

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top