Si 特定のファイルが更新されたときにタスクを実行または更新したい、makeユーティリティが便利です。 makeユーティリティには、実行する一連のタスクを定義するファイルmakefileが必要です。
makeを使用してソースコードからプログラムをコンパイルしたことがあるので、この名前は多くの人に馴染みのある名前に聞こえます。 ほとんどのオープンソースプロジェクトは、makeを使用して最終的な実行可能バイナリをコンパイルします。これは、makeinstallを使用してインストールできます。
今回は このタイプのファイルがLinux内でどのように機能するかを理解します。
makefileファイル これは基本的にXNUMXつの基本的なタイプのステートメントに区別されます。
- 注釈
- 変数。
- 明示的なルール。
- 暗黙のルール。
明示的なルールは、特定のファイルをコンパイルするために必要なコマンドだけでなく、どのファイルが他のファイルに依存するかを示します。
暗黙的なものは明示的なものと似ていますが、違いは実行するコマンドを示しますが、代わりにmakeはファイル拡張子を使用して実行するコマンドを決定します。
この例では、これらの最後のXNUMXつを使用しません。 まず、ターミナルでクラシックな「ハローワールド」を印刷することから始めます。
このために、必要な名前で空のディレクトリを作成します。
この場合 それを「example-make」と呼びましょう そしてこの中で 次の内容でmakefileを作成します。
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
echo "Hola Mundo"
現在 ディレクトリ内でmakeと入力してファイルを実行すると、出力は次のようになります。
make
echo "Hola Mundo"
Hola Mundo
makefileがいつ実行されたかを確認できるように、コマンドecho "Hello World"が表示され、続いて実際のコマンドが出力されます。 私たちはしばしばそれを望まない。 makeの実行時にこの出力を抑制するには、echoの前に「@」を追加するだけです。
これの実際的な例は次のとおりです。
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
現在 makefileの実行に進むことができます。 これだけの出力は次のようになります。
make
Hola Mundo
これはかなり基本的なことです。 しかし、ご存知のように、makefileには多くのものが含まれており、それらは従うべきシーケンスを示しています。
このファイルにいくつかの簡単なシーケンスを追加できます。
なに 次のようにファイルを編集します。
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
crear_un_archivo_nuevo:
@ echo "Estoy creando un archivo.txt ..."
touch archivo.txt
makefileを再実行するとき、 これは最初の目的のみを実行します。 これは、makefileの最初のターゲットのみがデフォルトのターゲットであるためです。
順番に実行するには ファイル内で「all」で示す必要があります。 他のターゲットを呼び出すのは「そこ」の責任です。
all: esta_es_una_variable crear_un_archivo_nuevo
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
crear_un_archivo_nuevo:
@ echo "Estoy creando un archivo.txt ..."
touch archivo.txt
makeの実行に進むと、ディレクトリ内に次のファイルが表示されます。 「File.txt」。
同じように makefileファイル内でターゲットを実行できる可能性があります、これは一般的に広く使用されています。
ファイルを変更し、最後に以下を追加します。
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt
makeを再度実行すると、txtファイルが再作成されます。 ご覧のとおり、前回と同じように動作します。 しかし、ここで、makefileファイル内にあるターゲットを実行します。
これを行うには:
make clean
これにより、makeファイルについて非常に基本的なことと、いくつかのことを自動化したい場合にそれらがどのように非常に役立つかを学ぶことができます。
明らかに、より大きく、より複雑なファイルを作成することもできますが、これは、これがどのように機能するかを理解している初心者(私も含めて)の単なる例です。
非常に興味深い記事。 質問...あなたが「変数」と呼ぶものは関数やメソッドではないでしょうか?
実際、そうです、私の友人、訂正してくれてありがとう。
ご挨拶!
素晴らしいです、私はあなたが掘り続けることを望みます。
まあ、どちらも、 https://www.gnu.org/software/make/manual/make.html、は「ターゲット」です
ルール
うまくいけば、彼らはLinuxの日々の実行について、このような「ユビキタスでエレメンタリー」なことを説明し続けることを願っています。