[解決済み] make clean、make clobber、make distclean、make mrproper、make realcleanの違いは何ですか?
質問
私はいつもmakeファイルを書くわけではありませんが、書くときはうまく書くように心がけています。 他の開発者が期待するものと一貫したインターフェイスを作ろうとすると、いつも苦労する。 私が探しているのは、一般的な make something cleaner (GNU) の make ターゲットの要約です。
よく見かけるクリーニング用のmakeターゲットにはどのようなものがありますか?
それぞれのターゲットは、通常どのような場合に使用されるのでしょうか?
各ターゲットは他のターゲットと比較してどうですか?
を使ったシステムで仕事をしたことがあります。
make clean
,
make clobber
と
make mrproper
以前は それらは着実に拡張されていきました。
make clean
一時的な整理をするだけ。
make clobber
ほとんどの設定を削除し
make mrproper
チェックアウトしたばかりの状態に戻りそうです。 これが通常の順序なのでしょうか? すべき
make mrproper
は、デプロイ時に生成されたバイナリと共有ライブラリを常に削除するのですか?
いろいろ読んでみると
make distclean
は、配布用パッケージを作成するための準備として、物事を整理するものです。 自動生成されたバージョンタグのファイル、ファイルマニフェスト、共有ライブラリは残りますが、アーカイブしたくないような一時的なファイルは削除されるのではないでしょうか?
make realclean
で見つけたとき、私はまったく新しい発見をしました。
GNU Make Goalsのマニュアルページ
. と共に記載されているように
distclean
と
clobber
似たような効果があったのでしょうね。これは歴史的な遺物なのか、それとも私が取り組んできたプロジェクト群にかなり特化したものなのか、私は一度も出会ったことがないのでしょうか。
すみません、ちょっと雑談になってしまいました。 ターゲットとターゲットを比較したQ&Aはいろいろありましたが、概要を説明したようなものはありませんでした。
どのように解決するのですか?
いろいろと調べて自分なりの答えを出そうとしています。 おおよその深刻さの順序は、こうだと思います。
mostlyclean
,
clean
,
maintainer-clean
,
mrproper
,
distclean
そして最後に
clobber
(これは、結合された
distclean
と
uninstall
).
きれいにする
make clean
は最も基本的なレベルです。 ほとんどの生成ファイルをクリーンアップしますが、設定を記録するようなものはありません。
GNU Makeマニュアルの目標ページ
の状態になります。
makeを実行すると通常作成されるファイルをすべて削除します。
さらに GNU Makeマニュアルの標準ターゲットのページ のステージがあります。
カレントディレクトリにある、プログラムをビルドすることによって通常作成されるすべてのファイルを削除します。また、他のディレクトリにあるファイルについても、このmakefileによって作成されたものであれば削除します。ただし、設定を記録しているファイルは削除しないでください。また、ビルドによって作成される可能性があるが、ディストリビューションに付属しているため、通常は作成されないファイルも保存してください。mkdir -p' で作成された親ディレクトリはどうせ存在するのですから、削除する必要はありません。
.dviファイルがディストリビューションの一部でない場合は、ここで削除してください。
ほぼクリーンにする
make mostlyclean
は、私が見つけた中で唯一穏やかな形の clean で、clean と同じように動作しますが、コンパイルに長い時間がかかり、頻繁に再生成する必要がないようなファイルを残します。
は、その GNU Makeマニュアルの標準ターゲットのページ のステージがあります。
clean' と同様ですが、通常リコンパイルしたくないようなファイルの削除を控えることがあります。たとえば、GCCの'mostlyclean'ターゲットはlibgcc.aを削除しません。なぜなら、再コンパイルはほとんど必要なく、たくさんの時間がかかるからです。
make distclean
make distclean
は、基本的な
make clean
を、多くのGNU Makeシステムで使用することができます。 これは、仮名か、少なくとも
make realclean
と
make clobber
を使用することができます。 をすべて削除します。
make clean
を実行し、設定を削除します。
Linuxシステムでは、これは一歩先を行っています
make mrpropper
詳細は以下のセクションを参照してください。
この名前は、配布できるようにきれいにする(tarアーカイブの形成)ことを意味しているのか、配布したものと同じ状態に戻す(tarアーカイブを解凍した直後の状態)ことを意味しているのか、よく分かりません。
GNU Makeマニュアルのゴールのページ の状態になります。
これらのターゲットは、'clean' よりも多くのファイルを削除するように定義することができます。例えば、コンパイルの準備として通常作成する設定ファイルやリンクを、 makefile 自体がこれらのファイルを作成できない場合でも、削除することができます。
さらに GNU Makeマニュアルの標準ターゲットのページ のステージがあります。
カレントディレクトリにある(あるいはこの makefile で作成された)プログラムの設定やビルドで作成されたファイルをすべて削除します。ソースを解凍し、他のファイルを作成せずにプログラムをビルドした場合、 'make distclean' は配布物にあったファイルのみを残すはずです。しかし、'mkdir -p' で作成された親ディレクトリは、どのみち存在し得たので、削除する必要はありません。
アンインストールする
make uninstall
でインストールしたソフトをアンインストールします。
make install
または
install-*
のバリアントです。 に対する動作の一部と似ています。
make clobber
を使用するシステムもありますが
make uninstall
のようにビルドエリアに触れないようにする必要があります。
make clobber
になります。
は、その GNU Make マニュアルの標準ターゲットのページ のステージがあります。
インストールされたすべてのファイル、つまり 'install' と 'install-*' ターゲットが作成するコピーを削除します。
このルールは、コンパイルが行われるディレクトリを変更してはならず、ファイルがインストールされるディレクトリのみを変更する必要があります。
メンテナークリーンを作る
make maintainer-clean
は、より一般的な
make distclean
. これは、設定以外のほとんどすべてを削除します。 そのため
make clean
.
は GNU Makeマニュアルの標準ターゲットのページ のステージがあります。
この Makefile で再構築できるものはほとんどすべて削除してください。これには通常、distclean によって削除されたものすべてと、それ以上のものが含まれます。Bison が生成した C ソースファイル、タグテーブル、Info ファイルなどです。
また、特定のユーザー向けであるため、一般的に使用される対象ではないことが強調されています。
maintainer-clean' ターゲットはパッケージのメンテナが使うことを想定しており、一般ユーザが使うものではありません。
mrproper を作る
make mrproper
のLinuxカーネル版と思われる。
make distclean
または
make clobber
.
バックアップファイルやパッチファイルの削除にとどまるものです。 これは
make clean
ターゲットが行い、設定を削除します。
この名前は、アメリカで知られているクリーニング製品からきていると思います。 ミスタークリーン と、英国ではFlashと呼ばれています(だから、この名前の製品は知らなかったのです)。 Linus Torvaldsはフィンランド系アメリカ人なので、Mr.Propperというブランド名には馴染みがあったのだろう。
その Linuxカーネルメイクファイル の状態です。
# Cleaning is done on three levels.
# make clean Delete most generated files
# Leave enough to build external modules
# make mrproper Delete the current configuration, and all generated files
# make distclean Remove editor backup files, patch leftover files and the like
クラバーを作る
make clobber
で言及されます。
ウィキペディアの「Clobbering」の記事
もあります。 それはまた、より厳しいと述べています
make clean
ソフトをアンインストールしてしまう可能性もあります。 の組み合わせの可能性があります。
make uninstall
と
make distclean
.
メイククリーンレベルのソースは1つではありません。 時間の経過とともに進化してきたため、用語や動作に一貫性がありません。 上記は、私がこれまでにまとめた最高のものです。
関連
-
[解決済み】Makefileの中の.PHONYの目的は何ですか?
-
[解決済み] Make: LDLIBS, 非推奨?
-
[解決済み] makefile の "ifeq" 条件構文
-
[解決済み] GNU Makefile の変数割り当て =, ?=, :=, += の違いは何ですか?
-
[解決済み] distribute, distutils, setuptools, distutils2 の違い?
-
[解決済み] makefile の記号 $@ と $< はどういう意味ですか?
-
[解決済み] .aファイル、.soファイルとは何ですか?
-
[解決済み] Makefile.amとMakefile.inとは何ですか?
-
[解決済み】Makeでレシピ行の接頭辞として@、-、+がありますが、これは何でしょうか?
-
[解決済み] gmakeとmakeの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Makeエラー:セパレータがない
-
[解決済み】コマンドラインからmakeに追加の変数を渡す場合
-
[解決済み] CygwinでのMakefile
-
[解決済み] make clean、make clobber、make distclean、make mrproper、make realcleanの違いは何ですか?
-
[解決済み] makefileの "all "は何の略ですか?
-
[解決済み] makeファイルの@!の意味は?
-
[解決済み】makefileに'cd'コマンドを記述するには?
-
[解決済み】makefileでターゲットのリストを取得する方法とは?
-
[解決済み] Makefile にファイルが存在するかどうかを確認し、削除するにはどうすればよいですか?
-
[解決済み] CLionでCMakeの代わりにローカルのmakefileを使用する