makefile

目录

语法

执行         

变量

        自定义变量

        系统环境变量

        预定义变量

makefile

代码

 makefile

修改单独文件可以节省编译时间

自定义变量替换

预定义变量替换(最终版本)


语法

        目标:依赖文件

                命令(需要用tab)

        通过依赖文件生成目标文件

执行         

        make

        make -f 文件名 指定文件名

        makefile可以有多个目标,默认执行第一个目标,make 目标 可以指定执行哪个目标

变量

        自定义变量

                变量名 = 变量值(没有类型)

                使用变量$(变量名)

                终端下 #make 变量名 = 变量值(可以在终端给变量传值)

        系统环境变量

                例如pwd等系统环境变量都可以,只不过在makefile中需要大写

                实际上其实没啥意义

        预定义变量

                $@ 目标名

                $< 依赖文件列表中的第一个文件

                $^ 依赖文件列表会删除重复的

makefile

代码

test.h

#include <stdio.h>

#define PI 3.1415926

void func();

test.c

#include "test.h"

int main()
{
    printf("%lf\n",PI);

    func();

    return 0;
}

test2.c

#include "test.h"

void func()
{
    printf("hello world\n");
}

 makefile

test:test.c
    gcc test.c test2.c -o test
remove:
    rm test    

修改单独文件可以节省编译时间

test:test.o test2.o
    gcc test.o test2.o -o test
test.o:test.c
    gcc -c test.c -o test.o
test2.o:test2.c
    gcc -c test2.c -o test2.o
clean:
    rm -rf test *.o

自定义变量替换

exec = test
#环境不同命令会有些差别
cc = gcc
#cc = arm-linux-gcc 
obj = test.o test2.o
#-Wall 警告   -g 调试
cflags = -Wall -g
#cflags = -g
$(exec):test.o test2.o
    $(cc) $(obj) -o $(exec) $(cflags) 
test.o:test.c
    $(cc) -c test.c -o test.o $(cflags)
test2.o:test2.c
    $(cc) -c test2.c -o test2.o $(cflags)
clean:
    rm -rf $(exec) *.o

预定义变量替换(最终版本)

exec = test
cc = gcc
#其实真的需要修改的基本也只有下面这一行,生成目标文件名字可以改成自己喜欢的.
obj = test.o test2.o
#-Wall 警告	-g 调试
cflags = -Wall -g
#cflags = -g
$(exec):$(obj)
	$(cc) $^ -o $@ $(cflags) 
#% 这个叫啥实在记不住了,百度了一下也找到标准的说法,不过他其实就是一个可以匹配的东西(逐一匹配)
%.o:%.c
	$(cc) -c $< -o $@ $(cflags)
clean:
	rm -rf $(exec) *.o

 这个东西吧,我也不知道咋说,也不能弄个几千字文字描述不是,然后就只能这样了.

其实这个能写固然是好的,不能写无所谓会用就行,实际工作中基本都是脚本自动生成的

Linux大概就这样了,之后在系统编程里在详细说说,然后开始C++吧.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值