主に娯楽として、 というディレクトリに を作成しmakefile、それを実行可能にしました。ファイルの最初の行は次のようになりました。$HOME/binrebuild.mk
#!/bin/make -f
#
# Comments on what the makefile is for
...
all: ${SCRIPTS} ${LINKS} ...
...
次のように入力できます。
rebuild.mk
これによりmake実行されます。
これ以外に、これを永続的に悪用しない理由は何ですか:
- makefile は 1 つのディレクトリに関連付けられているため、メイン ディレクトリには適切ではありません
bin。
これまでに悪用されたトリックを見た人はいますか?
いくつかのコメントを収集し、もう少し背景情報を提供します。
- Norman Ramsey は、この手法が Debian で使用されていると報告しています。それは興味深いことです。ありがとうございました。
- 「make」と入力する方が慣用的であることに同意します。
- ただし、シナリオ (以前は言及されていません) は、私の $HOME/bin ディレクトリに、ディレクトリ内の 500 以上のコマンドの主要なメンテナンス ツールであるクロスプラットフォームのメインの makefile が既に含まれているというものです。
- ただし、ある特定のマシン (のみ) で、特別なツール セットを構築するためのメイクファイルを追加したいと考えました。したがって、これらのツールは、
rebuild.mkこの質問のために呼び出した特別なメイクファイルを取得します (私のマシンでは別の名前が付けられています)。 make -f rebuild.mk代わりに「 」を使用することで、「 」と入力する手間を省くことができますrebuild.mk。- ユーティリティの位置を修正することは、
makeプラットフォーム間で問題があります。 - この
#!/usr/bin/env make -f手法は機能する可能性がありますが、公式の交戦規則では、行は 32 文字未満で、コマンドの引数は 1 つしか指定できないと考えられます。 - @dF は、この手法では作成する引数を渡すことができない可能性があるとコメントしています。いずれにせよ、それは私の Solaris マシンでは問題になりません。私がテストした 3 つの異なるバージョンの「make」(Sun、GNU、私のもの) はすべて、オプション (私の自作バージョンでは「-u」) とターゲット「someprogram」およびマクロ CC を含む、私が入力する追加のコマンド ライン引数を取得しました。 ='cc' WFLAGS=-v (別のコンパイラを使用し、Sun コンパイラが認識しない GCC 警告フラグをキャンセルするため)。
これを一般的な手法として推奨するつもりはありません。
述べたように、それは主に私の娯楽のためでした。この特定の仕事のためにそれを保持するかもしれません。分散作業で使用する可能性はほとんどありません。もしそうなら、私は ' fixin' スクリプトを提供して適用し、インタープリターのパス名を修正します。実際、私はすでに自分のマシンでそれを行っていました。そのスクリプトは、Camel ブック (Larry Wall による「Programming Perl」) の初版の遺物です。