首页 > 其他分享 >makefile只编译修改过的文件

makefile只编译修改过的文件

时间:2023-06-26 15:56:22浏览次数:34  
标签:lib 修改 int app makefile module2 module1 编译 include

本文演示配置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

标签:lib,修改,int,app,makefile,module2,module1,编译,include
From: https://www.cnblogs.com/Netsharp/p/17505843.html

相关文章

  • spring boot 编译打包时将自定义引入的.jar包依赖,全部打包进去
    发现自己引入的.jar包,在打包时,.jar包并不会打进去,导致报错。打包时打入自定义.jar包方法:<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</a......
  • Linux-rsyslog日志格式修改
    0.背景rsyslog是linux系统中用来实现日志功能的服务。默认已经安装,并且自动启用。作用:主要用来采集日志,不生产日志支持输出日志到各种数据库,如MySQL,PostgreSQL,MongoDBElasticSearch,等等;通过RELP+TCP实现数据的可靠传输(基于此结合丰富的过滤条件可以建立一种可靠的......
  • C++面试八股文:std::array如何实现编译器排序?
    某日二师兄参加XXX科技公司的C++工程师开发岗位第25面:面试官:array熟悉吗?二师兄:你说的是原生数组还是std::array?面试官:你觉得两者有什么区别?二师兄:区别不是很大,原生数组(非动态数组)和std::array都在栈上开辟空间,初始化的时候需要提供数组长度,且长度不可改变。有一点区别的是,st......
  • C++面试八股文:std::array如何实现编译器排序?
    某日二师兄参加XXX科技公司的C++工程师开发岗位第25面:面试官:array熟悉吗?二师兄:你说的是原生数组还是std::array?面试官:你觉得两者有什么区别?二师兄:区别不是很大,原生数组(非动态数组)和std::array都在栈上开辟空间,初始化的时候需要提供数组长度,且长度不可改变。有一点区别的是,std......
  • 修改管理口IPMI密码
    问题描述太久没登陆IPMI了,用旧的密码死活登不上,如下图:遂在网上搜索,查看如何直接在本机上对IPMI的密码进行修改。TAKEAWAY在本机(Ubuntu20.04)执行下列命令:查看IPMI用户IDsudoipmitooluserlist输出效果如下:一般ADMIN的ID就是2,记得这个数,下面要用。密码修改......
  • 跨平台技术是指能够在不同操作系统和硬件平台上运行的技术。它允许开发人员使用一套代
    跨平台技术是指能够在不同操作系统和硬件平台上运行的技术。它允许开发人员使用一套代码来构建应用程序,然后将该应用程序部署到多个平台上,而无需进行大量的平台特定代码修改。以下是一些常见的跨平台技术:国产的跨平台技术:Weex:Weex是由阿里巴巴开发的跨平台移动应用开发框架。它......
  • 如何监控文件变化,比如密码修改导致 shadow 文件变化
    原始需求是如果系统的密码被修改,或者创建了新用户,就告警出来。本质上,只需要监控/etc/shadow文件变化即可。但是在指标监控体系里,这个事情就比较棘手,只能把文件的mtime作为指标的值上报,服务端再利用delta或者increase函数来判断mtime是否发生了变化。告警出来的文本也会......
  • IDEA中修改Java版本
    pom文件File---ProjectStructureFile---Settings---JavaCompilerrun/debugconfigurationMaven---Runner(可能影响)......
  • 修改博客园代码块高亮主题
    博客园(默认编辑器设置为Markdowm)是使用heightlight.js进行代码块高亮的。因此可以通过下载heightlight.js官网的主题css修改博客园中的代码块高亮颜色。修改方法:进入heightlight.js官网,点击demo页面预览,查看主题效果在下载页面选择需要的语言并下载打开下载......
  • Python动态修改实例对象的方法
    代码如下:importtypes#定义一个类classMyClass:deforiginal_method(self):#原始的执行函数print("原始的执行函数")#创建类的实例my_object=MyClass()#定义新的执行函数defnew_function(self):#在这里定义新的执行函数prin......