makefile demo

1. 最简单的makefile

假设编译器是gcc, 代码结构很简单, 源文件有main.c, test.h, test.c, 代码为:

/*file:test.h*/
#ifndef TEST_H
#define TEST_H
void func();
#endif

/*file:test.c*/
#include "test.h"
void func() {
  /*some codes*/
}

/*file:main.c*/
#include "test.h"
int main() {
  func();
  return 0;
}

makefile内容如下:

objects= main.o test.o
demo:$(objects)
	gcc -o demo $(objects)
main.o:main.c test.h
	gcc -c -o main.o main.c
test.o:test.c test.h
	gcc -c -o test.o test.c
.PHONY:clean
clean:
	rm -f *.o demo
生成demo可执行文件的命令为: make 或 make demo

2. 较大项目的makefile

较大项目的源文件很多, 为每个.o文件编写生成的规则, 会非常的麻烦, 将来新增或修改源文件的同时也要小心地维护makefile, 这样就带来了很多的不便. 利用make程序的自动推导功能和模式规则, 可以批量生成.o文件.

第一个例子的makefile可以改写为:

objects= main.o test.o
%.o:%.c
	gcc -c $< -o $@
demo:$(objects)
	gcc -o $@ $(objects)
.PHONY:clean
clean:
	rm -f *.o demo

执行命令: make demo, 以下为make的执行过程:

mjn@mjn-desktop:~/codes/makefile/demo$ make demo
gcc -c main.c -o main.o
gcc -c test.c -o test.o
gcc -o demo main.o test.o
3. 跨平台项目的makefile
跨平台的代码, 可能被不同的编译器编译, 所以不能把编译器和选项写死在makefile中, 需要根据不同的系统来选择相应的编译器(Linux的gcc/g++, IBM AIX的xlc/xlC, HP-UX的aCC/aCC).

to be continue.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值