自身の環境
- Windows10
- GNU make 3.81
- gcc 9.2.0
はじめに
この記事はC言語を勉強しはじめたばかりの人にむけてコンパイルの手間を少しでも省けて学習に集中できるのではないかという思いで書いてます。
※gccでC言語の開発環境が構築済みであることが前提です。
1.GNU makeをインストールする
下記のサイトからインストーラーをダウンロードする
Make for Windows ダウンロードサイト
上記画像の「Setup」をクリックすれば、ダウンロードできます。
ダウンロード後インストーラーを起動してインストールを行ってください。
※環境設定などの説明は省きます。
インストール後
コマンドプロンプトで「make -v」を入力し、下記のような結果になったら成功です。
C:>make -v
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
これはフリーソフトウェアです. 利用許諾についてはソースを
ご覧ください.
商業性や特定の目的への適合性の如何に関わらず, 無保証です.
This program built for i386-pc-mingw32
2.プログラムを用意
テストプログラムを適当に用意します。
複数ファイルをコンパイルしたいので複数のファイルを用意します。
まずはmain関数です。
今回は別ファイルの関数を呼び出す処理です。
test_1,test_2,test_3の3つの関数を呼び出します。
#include <stdio.h>
#include "test_Prot.h"
int main(void){
printf("test make\n");
test_1();
test_2();
test_3();
return 0;
}
次にヘッダファイルを作成します。
さきほどのtest.cファイルですでにincludeされていたのはこのためです。
呼び出し関数のプロトタイプ宣言を行います。
/* プロトタイプ宣言 */
void test_1(void);
void test_2(void);
void test_3(void);
各ファイルを作成し関数の中身を記載しておきましょう。
今回は簡単にテキストを表示するだけの処理です。
#include <stdio.h>
void test_1(){
printf("test_1\n");
return;
}
上記の要領で「test_2.c」「test_3.c」を作成し処理を記載しましょう。
Makefileを作成
拡張子がないファイルを用意してください。
例えば、上記で用意したtest.cをコピぺしてファイル名を変更して拡張子を消しても作れるます。
ファイル名は[Makefile]にしてください。
Makefileの中身を記載します。
今回は初心者がすぐ使えることを目的としているためコンパイルオプションはなるべく設定せず簡略表記もしないよう記載します。
CC := gcc
test:test.o test_1.o test_2.o test_3.o
gcc -o test test.o test_1.o test_2.o test_3.o
test.o:test.c test_Prot.h
gcc -c test.c
test_1.o:test_1.c
gcc -c test_1.c
test_2.o:test_2.c
gcc -c test_2.c
test_3.o:test_3.c
gcc -c test_3.c
CC := はコンパイラーを指定するコンパイルオプションです。
gccを使用するためgccとなってます。
複数ファイルをコンパイルするときのコマンドをそのまま記載しているイメージで大丈夫です。
上の4行を簡単に説明すると
test:test.o test_1.o test_2.o test_3.o
test.exeを作成するに必要なオブジェクトファイルは「test.o test_1.o test_2.o test_3.o」ですよ。
gcc -o test test.o test_1.o test_2.o test_3.o
↑のコマンドでtest.exeを作成しますよ。
test.o:test.c
test.oを作成するのに必要なファイルはtest.cですよ。
gcc -c test.c
↑コマンドでtest.oを作成しますよ。
makeを実行
ソースとMakefileが格納されているディレクトリに移動してmakeコマンドを実行します
C:\dir>make
gcc -c test.c
gcc -c test_1.c
gcc -c test_2.c
gcc -c test_3.c
gcc -o test test.o test_1.o test_2.o test_3.o
上記にような表示になるはずです。
ディレクトリ内に各ソースファイルのオブジェクファイルとexeファイルが生成されていれば成功です。
※再度makeするにはソースファイルを更新する必要があります。
ついでにプログラムも実行して確認してみましょう。
記事通りに作成すると以下のように表示されます。
C:\dir>test
test make
test_1
test_2
test_3
以上