makefile学习小记-显示规则

1、文件:

src:1.c  2.c  main.c

header:1.h  2.h

makefile

2.1.c:

#include <stdio.h>

int add(int a, int b)
{
        printf("a=%d, b=%d\n",a,b);
        return a+b;
}

2.c:

#include <stdio.h>

int sub(int a, int b)
{
        printf("a=%d,b=%d\n",a,b);
        return a-b;
}

main.c

#include <stdio.h>
#include "1.h"
#include "2.h"

int main(int argc, char **argv)
{
        printf("argc:%d\n",argc);
        for(int i=0;i<argc;i++)
                printf("i:%d, %s \n",i,argv[i]);

}

3、单独编main.c:

gcc main.c -o main.out

./main.out,结果正确:

argc:1
i:0, ./main.out 

4、Makefile:

main:1.o 2.o main.o
        gcc 1.o 2.o main.o -o main.out

1.o:1.c 1.h
        gcc -c 1.c -o 1.o

2.o:2.c 2.h
        gcc -c 2.c -o 2.o


main.o:main.c
        gcc -c main.c -o main.o

clean:
        rm -f *.o *.out

然后 ./main.out 也可。

5.make在执行第一个目标的生成时,target的名字和下面gcc -o的名字不同,实验结果是产生了main.out,表明是以下面的命令为准。

需注意的是,生成1.o、2.o这些时,:后面可以不写某个文件,比如把.h文件拿掉,也能编过;但是这违背了Makefile的设计,:后面的英文原意是 prerequisites,即如果不写,哪天后面的文件发生了变化,这里也不会被触发重编。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值