3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GNU Make入門 1/2

Last updated at Posted at 2019-09-17

はじめに

新卒 SE 見習い(投稿当時)のぷるぷえです。
全く違う仕事にアサインされたので、忘れないうちに文字に起こそうといったところです。

敷居を低くしようとした結果、抽象的な表現も散見します。予めご了承ください。
このエントリが私と同じ初心者 C 系プログラマーさんのエントリーになれば嬉しい限りです。

環境

Ubuntu Server 18.04.2 LTS
GNU Make 4.1

全体の流れ

以下の章立てで進めていきます。
尚、2つのエントリに分ける予定です。(いつか投稿します)
本エントリでは3章まで扱います。

  1. make とは
  2. 超絶簡単に makefile
  3. 結構簡単に makefile ここまで
  4. C ファイルのコンパイル
  5. 4 で作成した makefile の改良

make とは

作業を自動化するツールのことです。
コマンド(echo とかgccとか)を自動化するプログラムを組んだ makefile を作成すると、いろんな操作がコマンド一つでポーンってできちゃいます。

うれしいこと

  • 単純作業の自動化
  • 膨大なソースファイルを一気に実行
  • 変更したファイルだけ差分コンパイル
  • テストで必要

などなど。

超絶簡単に makefile

コマンドライン上に文字列を表示する「echo」コマンドを自動化します。
超絶簡単です。

1. makefile を作成

お使いのエディタで「makefile」という名前のファイルを作成してください。1
Atom なら、Ctrl + N → Ctrl + Shift + L で makefile を選択します。

2. プログラムを書く

makefile
all:
  echo Hello world!

3.実行

コンソールで「make」コマンドを打ちます。

makefile
$ make
echo Hello World!
Hello World!

表示されました。

結構簡単に makefile

ディレクトリのお掃除を自動化してみます。
こんなテキストファイルがあるとしましょう。

qiita_make3.PNG

フォルダ内には、rm.mk という makefile と C ファイル、そしてテキストファイルが2つ存在します。

ここを make コマンドで

qiita_make4.PNG

こうしたい!
rm.mk と同一ディレクトリ上のテキストファイルをお掃除するのがゴール。

1. makefile を作成

テキストファイルを rm する makefile を作成するので、「rm.mk」としました。

2. プログラムを書く

rm.mk
clean:; rm -f *.txt

ここで使われている「 * 」は、サフィックスを除いたターゲットの名前を指定する自動変数です。
*.txt は、任意のテキストファイルを対象にするという意味になります。

サフィックス : 文字列やデータ列の末尾に付加され、何らかの意味を表す要素を指す。(IT用語辞典さんより)

3.実行

今回は、makefile というファイル名ではなく、「rm.mk」としたので、以下のように実行します。

rm.mk
$ make -f rm.mk
rm -f *.txt

make コマンドの -f オプションによって、そのあとに指定したファイル(rm.mk)を makefile として扱うことができます。

qiita_make4.PNG

テキストファイルだけがすべて削除されました。
単純作業を自動化することがイメージできたと思います。

さいごに

次回は、面倒な C ファイルのコンパイルを自動化します。
make っていいな、となるのはこれからですね。

参考文献

  • GNU Make 第3版 - Robert Mecklenburg 著、矢吹 道郎 監訳、菊池 彰 訳
  1. 「makefile」や「Makefile」は、デフォルトで呼び出されます。拡張子が「.mk」の makefile は、make -f ~~.mk で呼び出します。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?