Makefile简介

Makefile 是和 make 命令一起配合使用的.

很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂.

Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些日常操作. 这个需要大家发挥自己的想象力.

1.1 Makefile 主要的 5个部分 (显示规则, 隐晦规则, 变量定义, 文件指示, 注释)
Makefile基本格式如下:

target ... : prerequisites ...
    command
    ...
    ...
其中,

target        - 目标文件, 可以是 Object File, 也可以是可执行文件
prerequisites - 生成 target 所需要的文件或者目标
command       - make需要执行的命令 (任意的shell命令), Makefile中的命令必须以 [tab] 开头
 

显示规则 :: 说明如何生成一个或多个目标文件(包括 生成的文件, 文件的依赖文件, 生成的命令)
隐晦规则 :: make的自动推导功能所执行的规则
变量定义 :: Makefile中定义的变量
文件指示 :: Makefile中引用其他Makefile; 指定Makefile中有效部分; 定义一个多行命令
注释     :: Makefile只有行注释 "#", 如果要使用或者输出"#"字符, 需要进行转义, "\#"
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
生成一个可执行文件的Makefile通常包含以下几个部分: 1. 定义目标(target):目标是指要生成的可执行文件的名称。可以使用变量来定义目标名称,例如: ``` TARGET = myprogram ``` 2. 定义依赖(prerequisites):依赖是指生成可执行文件所需要的源代码文件或其他依赖文件。可以使用变量来定义依赖文件列表,例如: ``` SRCS = main.c utils.c ``` 3. 定义编译命令(command):编译命令是指将源代码文件编译成目标文件的命令。可以使用变量来定义编译命令,例如: ``` CC = gcc CFLAGS = -Wall -g $(TARGET): $(SRCS) $(CC) $(CFLAGS) -o $@ $^ ``` 在上面的例子中,`$(TARGET)`表示目标文件,`$(SRCS)`表示依赖文件列表,`$(CC)`表示编译器,`$(CFLAGS)`表示编译选项。`$@`表示目标文件,`$^`表示所有依赖文件。 4. 定义其他规则:除了生成可执行文件的规则外,还可以定义其他规则,例如清理临时文件的规则: ``` clean: rm -f $(TARGET) *.o ``` 在上面的例子中,`clean`是规则名称,`rm -f $(TARGET) *.o`是清理临时文件的命令。 通过编写上述规则,保存为名为`Makefile`的文件,然后在命令行中执行`make`命令,即可生成可执行文件。 #### 引用[.reference_title] - *1* *3* [Makefile简介与使用](https://blog.csdn.net/chongbin007/article/details/123709482)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [makefile简单编写-生成可执行文件](https://blog.csdn.net/AJDJ26/article/details/79955989)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值