[C]如何写一个 makefile

func1.h

#ifndef _FUNC1_H_
#define _FUNC1_H_
void func1print();
#endif

func1.c

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

void func1print(){
    printf("This is func1 print!\n");
}

func2.h

#ifndef _FUNC2_H_
#define _FUNC2_H_

void func2print();
#endif

func2.c

#include<stdio.h>
#include "func1.h"
#include "func2.h"

void func2print(){
    printf("In func2, first, call func1:");
    func1print();

    printf("This is func2 print!\n");
}

main.c

#include "func1.h"
#include "func2.h"

int main(){
    func1print();
    func2print();
    return 0;

}

makefile

#Makefile
.PHONY:clean
myapp:	main.o func1.o func2.o
	gcc -o myapp main.o func1.o func2.o
main.o:	main.c func1.h func2.h
	gcc -c main.c
func1.o:func1.c func1.h
	gcc -c func1.c
func2.o:func2.c func1.h func2.h
	gcc -c func2.c
clean:
	$(RM) *.o myapp

执行

>make
gcc -c main.c
gcc -c func1.c
gcc -c func2.c
gcc -o myapp main.o func1.o func2.o

验证

>./myapp 
This is func1 print!
In func2, first, call func1:This is func1 print!
This is func2 print!

解除make

>make clean
rm -f *.o myapp

<<:  [全民疯AI系列] 完赛总结

>>:  JavaScript基本功修练:Day31 - 完赛了,然後呢?

[Day 18] 重构我们的测试程序码

随着我们专案功能的增加,虽然目前只有两个函数,但是我们的测试函数已经增加了不少。 为了减少我们未来阅...

Day09 - 语音特徵正规化

当一个模型的训练资料和测试资料,彼此之间的资料分布有不匹配(mismatch)时,模 型的性能会出现...

Day 2 : Odoo = 免费且完整的ERP + 完善的开发平台 + 第三方的免费Addon + 多人参与的商城

自我学习过程 5年前透过学校老师的介绍,重新再次认识及了解Odoo,印象中那时 Open ERP 己...

10. STM32-SPI介绍

SPI介绍 SPI(Serial Peripheral Interface)是主从式同步串列通讯,可...

[day27] - Angular Component to Web Component

後来发现 , 之前说明了 Vue . React Component 如何变成 Web Compon...