makefile基本结构:
target:dependenc_files
command // 命令行必须以Tab键开头
target //目标文件
dependenc_files // 依赖文件
三个文件:main.c sub.c sub.h
main.c
#include <stdio.h>
#include "sub.h"
int main()
{
printf("This is main.c!\n");
subprint();
return 0;
}
sub.c
#include <stdio.h>
#include "sub.h"
void subprint()
{
printf("maketest!\n");
}
sub.h
#ifndef SUB_H_
#define SUB_H_
void subprint();
#endif
makefile文件:
main:main.c sub.c sub.h
gcc -Wall main.c sub.c -o main
可以直接将三个文件一起编译。也可以一步一步进行编译过程
注:这里gcc -Wall main.c sub.c -o main 不加sub.h也是正确的因为在引用头文件时使用的是"sub.h"
gcc 会自动在当前文件夹搜索sub.h
main:main.o sub.o
gcc -Wall main.o sub.o -o main
main.o:main.c sub.h
gcc -Wall -c main.c -o main.o
sub.o:sub.c sub.h
gcc -Wall -c sub.c -o sub.o
特殊地:使用变量的makefile文件
OBJS = main.c sub.c sub.h
CC = gcc
CFLAGS = -Wall -O -g
main:$(OBJS)
$(CC) $^ -o $@