2
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 1 year has passed since last update.

【C言語】Windowsでmakeを行う 初心者向け

Last updated at Posted at 2022-01-31

自身の環境

  • Windows10
  • GNU make 3.81
  • gcc 9.2.0

はじめに

この記事はC言語を勉強しはじめたばかりの人にむけてコンパイルの手間を少しでも省けて学習に集中できるのではないかという思いで書いてます。

※gccでC言語の開発環境が構築済みであることが前提です。

1.GNU makeをインストールする

下記のサイトからインストーラーをダウンロードする
Make for Windows ダウンロードサイト

1.png

上記画像の「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つの関数を呼び出します。

test.c
#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されていたのはこのためです。

呼び出し関数のプロトタイプ宣言を行います。

test_Prot.h
/* プロトタイプ宣言 */
void test_1(void);
void test_2(void);
void test_3(void);

各ファイルを作成し関数の中身を記載しておきましょう。

今回は簡単にテキストを表示するだけの処理です。

test_1.c
#include <stdio.h>

void test_1(){

    printf("test_1\n");

    return;
}

上記の要領で「test_2.c」「test_3.c」を作成し処理を記載しましょう。

Makefileを作成

拡張子がないファイルを用意してください。

例えば、上記で用意したtest.cをコピぺしてファイル名を変更して拡張子を消しても作れるます。

2.png

ファイル名は[Makefile]にしてください。

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

上記にような表示になるはずです。

3.png

ディレクトリ内に各ソースファイルのオブジェクファイルとexeファイルが生成されていれば成功です。
※再度makeするにはソースファイルを更新する必要があります。

ついでにプログラムも実行して確認してみましょう。
記事通りに作成すると以下のように表示されます。

コマンドプロンプト.
C:\dir>test
test make
test_1
test_2
test_3

以上

2
3
2

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
2
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?