Makefile语法基础

简介: Makefile语法基础

Makefile语法基础

Makefile 是一种用于构建和管理项目的工具,它使用一种类似于 Shell 脚本的语法。下面是一个简单的 Makefile 代码示例,涵盖了基础的语法和常见的构建规则:

# 定义变量
CC = gcc
CFLAGS = -Wall -O2
SRC_DIR = src
BUILD_DIR = build
TARGET = my_program
# 构建目标
$(BUILD_DIR)/$(TARGET): $(BUILD_DIR)/main.o $(BUILD_DIR)/foo.o $(BUILD_DIR)/bar.o
    $(CC) $^ -o $@
# 构建目标文件
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c
    $(CC) $(CFLAGS) -c $< -o $@
# 默认目标
all: $(BUILD_DIR)/$(TARGET)
# 清理操作
clean:
    rm -rf $(BUILD_DIR)/*.o $(BUILD_DIR)/$(TARGET)



1. 变量定义:
在上述示例中,使用了变量来存储编译器 (CC)、编译选项 (CFLAGS)、源代码目录 (SRC_DIR)、构建目录 (BUILD_DIR) 和目标可执行文件 (TARGET)。这样可以方便地修改和扩展项目的结构。
2. 构建目标规则:
$(BUILD_DIR)/$(TARGET): $(BUILD_DIR)/main.o $(BUILD_DIR)/foo.o $(BUILD_DIR)/bar.o 规则定义了如何生成最终的目标可执行文件。它依赖于目标文件 main.o、foo.o 和 bar.o,并通过链接命令将它们组合成可执行文件。
3. 构建目标文件规则:
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c 规则使用通配符 % 定义了如何生成目标目录中的目标文件。这个规则是一个模式规则,它告诉 Make 如何将源代码文件编译成目标文件。
4. 默认目标:
all: $(BUILD_DIR)/$(TARGET) 指定了默认目标,当用户运行 make 命令时,会执行该目标。在这个例子中,执行 all 相当于执行构建目标的规则。
5. 清理操作:
clean 目标定义了清理操作,以删除构建过程中生成的目标文件和可执行文件。这有助于确保下次构建时从一个干净的状态开始。
这个示例展示了一个简单的 Makefile,其中包括了变量、目标和规则的基本定义。通过这些基础概念,你可以构建更复杂的 Makefile,适应不同项目的需求。 Makefile 的强大之处在于它能够自动化项目构建过程,提高开发效率。

相关文章
|
6天前
|
存储 机器学习/深度学习 XML
python基础语法——文件与库
本文基于pycharm编译器,也可以使用Anaconda 里的编译器,将讲解一些python的一些基础语法知识,是对上篇文章的补充.
33 0
|
9月前
|
存储 Unix Shell
Python模块介绍和使用
Python模块介绍和使用
|
5月前
|
Shell Python
Python(三十五)python文件操作(3)
5:文件指针操作函数 tell() seek() (1):tell()判断文件指针当前所处的位置 lua 复制代码 f = open("log.txt", 'r', encoding="utf-8") print(f.tell()) print(f.read(10)) print(f.tell()) 输出: arduino 复制代码 0 https://gu 10 (2):seek()将文件指针移动至指定位置 语法: bash 复制代码 file.seek(offset[, whence]) 其中,各个参数的含义如下: file:表示文件对象; whence:作为可选参数,用于指定文
31 1
|
6月前
|
编译器 Python
Python编译器Pycharm使用技巧
Python编译器Pycharm使用技巧
|
Shell Go 开发工具
一日一技:为 Python 项目编写 Makefile
一日一技:为 Python 项目编写 Makefile
152 0
|
Python
python中使用pycharm变量与程序调试
python中使用pycharm变量与程序调试
106 0
|
Python
Python编程:设置Python解释器不生成字节码pyc文件
Python编程:设置Python解释器不生成字节码pyc文件
95 0
|
数据采集 机器学习/深度学习 缓存
[oeasy]python0010 - python虚拟机解释执行py文件的原理
[oeasy]python0010 - python虚拟机解释执行py文件的原理
166 0
[oeasy]python0010 - python虚拟机解释执行py文件的原理
|
数据采集 存储 Shell
[oeasy]教您玩转python - 0003 - 编写 py 文件
​ [oeasy]python3-用vim编辑python文件 [点击并拖拽以移动] 编写 py 文件 🥊 回忆上次内容 上次在解释器里玩耍 了解到字符串就是给一堆字符两边加引号 可以是单引号 也可以是双引号 这样游乐场就知道 这个不是一个名字 而是一个字符串 字符串可以用print函数进行输出 但是print千万不要打错 就连大小写都不能错 我们在游乐场玩了这么久 能否写一个真正的python文件啊?🤔 编辑
183 0
 [oeasy]教您玩转python - 0003 - 编写 py 文件
|
移动开发 Unix Linux
【python | linux07】OS模块的用法及python换行符问题
有些时候,需要对文件进行重命名、删除等一些操作,Python 的 os 模块中都有这么功能
232 0
【python | linux07】OS模块的用法及python换行符问题