makefile只编译修改过的文件

本文演示配置makefile,检测修改的代码才编译,提升编译效率。

1. 测试代码

$ tree
.
├── app.c
├── lib
│   ├── module2.c
│   └── module2.h
├── makefile
├── module1.c
└── module1.h

app.c

    #include <stdio.h>
    #include "app.h"
    #include "module1.h"
    #include "lib/module2.h"

    int main()
    {
        int a = 3;
        int b = 2;
        printf("c1 is %d\n", add(a, b));
        printf("c2 is %d\n", sub(a, b));
        return 0;
    }

module1.h

    int add(int a, int b);  

module1.c

    #include "module1.h"

    int add(int a, int b)
    {
        return a + b;
    }

lib/module2.h

    int sub(int a, int b);  

lib/module2.c

    #include "module2.h"

    int sub(int a, int b)
    {
        return a - b;
    }

2. makefile

CC=gcc

SRCS= 
SRCS+=app.c 
SRCS+=module1.c 
SRCS+=lib/module2.c

OBJECTS= $(patsubst %.c,%.o,${SRCS})

app : ${OBJECTS}
	${CC} -o $@ $^

${OBJECTS}:%.o : %.c
	${CC} -c $< -o $@

.PHONY:clean
clean:
	rm -rf */*.o
	rm -rf *.o
	rm -rf app

posted on   Netsharp  阅读(311)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库

导航

统计

点击右上角即可分享
微信分享提示