linux下用makefile实现简单工程

5 篇文章 0 订阅
1 篇文章 0 订阅

Make简介:

工程管理器,顾名思义,是指管理较多的文件,Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作,Make将只编译改动的代码文件,而不用完全编译。

Makefile文件一般和项目的其他源文件放在同一个目录下。在机器上可以同时存在许多不同的makefile文件,如果一个大项目,可以用多个不同的makefile文件来分别管理项目的不同部分。

Make命令和makefile文件的结合提供了有一个在项目管理领域十分强大的工具,不仅可以用于控制源代码的编译,而且还可以用于手册也的编写以及将应用程序安装到目标目录。

Makefile中的特殊宏定义:
$* :不包括后缀名的当前依赖文件的名称
$+ :所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件
$< :第一个依赖文件的名称
$? : 所有时间戳比目标文件晚的依赖文件,并以空格分开
$@ : 目标文件的完整名称
$^ : 所有不重复的目标依赖文件,以空格分开

  • : 告诉make命令忽略所有的错误
    @ : 告诉make在执行命令前不要将改命令显示在标准输出上

**例:**实现一个测试集

功能:包含多个测试功能,代码分布在不同的目录下,在根目录下有

bin : 生成obj及二进制目录
include : 头文件
src : 源代码,分为main(入口) mem(存储类) c_test(c语言类)
在这里插入图片描述

在这里插入图片描述

当我们要编译时,在根目录下运行make命令(等同make all),会根据顺序设定依次去执行src/c_test, src/mem, src/main. Src中的makefile

运行make clean 会执行makefile中的clean模块,删除bin目录下的所有文件

Main.c:



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

int main(int argc,char** argv) {
    printf("hello test units\n");
    memtest_entry();
    ctest_entry();
    return 0;
}

ctest.c

#include <stdio.h>
#include "pub.h"
int ctest_entry(void){
    printf("please test c program\n");
    return 0;
}

mem.c

```c


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

int memtest_entry() {
    printf("please test mem\n");
    return 0;
}

生成执行情况

在这里插入图片描述














 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值