このエントリーをはてなブックマークに追加


Makefileのサンプル

本資料は、ヘッダーファイル、Cソースファイルの各依存関係を記したMakefileのサンプルになります。


スポンサーリンク

Cサンプルソースなどの説明

本資料で使用しているCサンプルソース、ヘッダーファイルは以下の通りです。
main.cからsub1.c, sub2.cの関数を呼び出します。
また、sub1.h, sub2.hも用意してあります。

01.gif

main.c

sub1.c, sub2.c の呼び出し元となる main.c は以下の通りです。

filemain.c (改行コードLF)

#include <stdio.h>
#include "sub1.h"
#include "sub2.h"

int main(void)
{
    sub1_func();
    sub2_func();

    return 0;
}

sub1.c, sub1.h

main.cから呼び出されるsub1_func()のサンプルソースとヘッダーファイルです。

sub1.h

filesub1.h (改行コードLF)

#ifndef __SUB1_H__
#define __SUB1_H__

extern void sub1_func(void);

#endif

sub1.c

filesub1.c (改行コードLF)

#include <stdio.h>
#include "sub1.h"

void sub1_func(void)
{
    printf("HELLO!\n");
}

sub2.c, sub2.h

main.cから呼び出されるsub2_func()のサンプルソースとヘッダーファイルです。

sub2.h

filesub2.h (改行コードLF)

#ifndef __SUB2_H__
#define __SUB2_H__

extern void sub2_func(void);

#endif

sub2.c

filesub2.c (改行コードLF)

#include <stdio.h>
#include "sub2.h"

void sub2_func(void)
{
    printf("BYE!\n");
}

サンプルMakeファイル

以下に上記のCサンプルソース、ヘッダーファイルの依存関係を記したMakefileを記します。

fileMakefile (改行コードLF)

#
# Sample Makefile
#
CC = gcc
CFLAGS=-O
OBJS = main.o sub1.o sub2.o
TARGET = sample

sample: main.o sub1.o sub2.o
	$(CC) $(CFLAGS) $(OBJS) -o $(TARGET)
main.o: main.c
	$(CC) -c main.c
sub1.o: sub1.c sub1.h
	$(CC) -c sub1.c
sub2.o: sub2.c sub2.h
	$(CC) -c sub2.c
clean:
	rm -f $(OBJS) $(TARGET)

上記のMakefileを簡単に説明します。

  • CC
    コンパイラを指定しています。この場合はgccです。
  • OBJS
    コンパイルにて出力されるオブジェクトファイル名を指定しています。
  • TARGET
    実行ファイル名を指定しています。
  • sample
    実行ファイルに依存するオブジェクトファイルを指定しています。
    またコンパイルし実行ファイルを出力する構文を指定してあります。
  • main.o
    main.oのファイルに依存するソースファイルを指定しています。
  • sub1.o
    sub1.oのファイルに依存するソースファイルを指定しています。
  • sub2.o
    sub2.oのファイルに依存するソースファイルを指定しています。
  • clean
    make cleanによりオブジェクトファイルおよび実行ファイルを削除します。

Makeしてみる

以下に端末からmakeして実行した時のオペレーションを記します。

$ make
gcc -c main.c
gcc -c sub1.c
gcc -c sub2.c
gcc -O main.o sub1.o sub2.o -o sample
$ ./sample 
HELLO!
BYE!
$ make clean 
rm -f main.o sub1.o sub2.o sample

以上、Makefileのサンプルでした。


スポンサーリンク

添付ファイル: file01.gif 482件 [詳細] fileMakefile 438件 [詳細] filemain.c 403件 [詳細] filesub1.c 423件 [詳細] filesub1.h 391件 [詳細] filesub2.c 417件 [詳細] filesub2.h 410件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 21:01:00