[1] 分割コンパイルの仕方
前提
以下のファイルがあると仮定
1 showA.c
2 showB.c
3 main.c
4 show.h
showA.c
#include <stdio.h>
void showA(){
printf("A\n");
}
showB.c
#include <stdio.h>
void showB(){
printf("B\n");
}
main.c
#include <stdio.h>
#include "show.h"
int main(void){
showA();
showB();
int n = retnum();
printf("retnum : %d\n",n);
return 0;
}
show.h
void showA(void);
void showB(void);
int retnum(){
return 1;
}
コンパイルの仕方
以下を順番に実行する。
ターミナル
$ gcc -c showA.c
ターミナル
$ gcc -c showB.c
ターミナル
$ gcc -c main.c
ターミナル
$ gcc -o main showA.o showB.o main.o
まとめて実行すると、以下のとおり。
ターミナル
$ gcc -c showA.c showB.c main.c
ターミナル
$ gcc -o main showA.o showB.o main.o
[2] Makefileの書き方
Makefileとは
(ざっくりと)コンパイルを自動化するツール。
詳細 : https://www.gnu.org/software/make/manual/make.html#Reading
Makefileを書く
Makefileの記述方法
記述方法
作りたいもの : 作るのに必要な材料
<TAB>作る方法
Makefile
all: main
showA.o: showA.c
gcc -c showA.c
showB.o: showB.c
gcc -c showB.c
main.o: main.c
gcc -c showM.c
main: showA.o showB.o main.o
gcc -o main showA.o showB.o showM.o
clean:
rm -f *.o main
ターミナル
$ make showA.o //gcc -c showA.c が実行される。
$ make all //showA.o showB.o main.o main が作られる。
$ make clean //rm -f *.o main が実行される。
以上。