项目工程编译工具Makefile介绍

多文件编译:MakeFile

一般由一个main.c文件外加若干个子函数文件,同时会存在一个后缀是.h的文件组成

如何书写头文件

引用头文件的两中方式:

        方式1:#include <头文件名>

        方式2:#include “头文件名”

区别:

        <>:会去系统标准的库头文件路径去查找该.h文件 /user/include

        " ":会去用户当前工作路径下去查找这个.h头文件

书写头文件的格式:

        自定义的头文件后缀为.h

书写格式:(test.h)        

#ifndef  _TEST_H_

#define  _TEST_H_

//头文件(调用标准库头文件)
//结构体定义
//枚举
//宏定义
//函数声明

#endif

以上书写头文件的方式为“条件编译”,作用是为了防止头文件被重复包含。

工程目录结构如下:

 

make:可以用于管理工程

管理工程的特点:根据一个叫做“时间戳”的概念去执行工程

意味着只会将参与过修改的文件再次更新在工程中,减少代码编译占用资源

Make格式:

     目标:依赖

     [Tab]命令表

解释:

     目标:终极产品

     依赖:生成终极产品所具备的要素

     命令表:交代了终极产品的制作过程

如何执行Make:

        make  目标

Make工程中的变量:

用户自定义变量

        变量名=值

自动变量

        $<:第一个依赖

        $^:所有依赖

        $@:目标名

系统预定义变量

        有特定的含义:

        CC:编译器的名称,默认值为cc,我们可以指定为gcc

        CFLAGS:编译器的选项,无默认值,我们可以指定为:-c -g -Wall

        RM:可以删除文件,默认值为:rm -f,我们可以指定:rm -rf

环境变量

        export------->可以添加变量到整个工程中去

示例:

Makefile:

#定义一个整个工程中用到的变量
OBJS:=menu.o input.o output.o malloc.o main.o first_ave.o two_failed.o all_s.o
CC:=gcc
CFLAGS:=-c -g -Wall
export OBJS CC CFLAGS
All:
	make -C ./src/
	make -C ./obj/
.PHONY:clean
clean:
	$(RM) ./obj/*.o
	$(RM) ./bin/*

 src下makefile:

All:menu.o malloc.o input.o output.o first_ave.o two_failed.o all_s.o main.o
	mv $^ ../obj/
menu.o:menu.c
	$(CC) $(CFLAGS) $< -o $@
malloc.o:malloc.c
	$(CC) $(CFLAGS) $< -o $@
input.o:input.c
	$(CC) $(CFLAGS) $< -o $@
output.o:output.c
	$(CC) $(CFLAGS) $< -o $@
first_ave.o:first_ave.c
	$(CC) $(CFLAGS) $< -o $@
two_failed.o:two_failed.c
	$(CC) $(CFLAGS) $< -o $@
all_s.o:all_s.c
	$(CC) $(CFLAGS) $< -o $@
main.o:main.c
	$(CC) $(CFLAGS) $< -o $

 obj下makefile:

All:test
	mv $^ ../bin/
test:$(OBJS)
	$(CC) $^ -o $@

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值