给我写个万能makefile
时间: 2023-11-06 09:07:12 浏览: 38
好的,以下是一个简单的万能Makefile:
```
CC=gcc
CFLAGS=-Wall -g
all: programprogram: main.o funcs.o
$(CC) $(CFLAGS) main.o funcs.o -o program
main.o: main.c
$(CC) $(CFLAGS) -c main.c
funcs.o: funcs.c
$(CC) $(CFLAGS) -c funcs.c
clean:
rm -f *.o program
```
这个Makefile使用了变量CC和CFLAGS来定义编译器和编译选项,使用了规则来生成目标文件以及最终的可执行文件。你可以根据具体的项目需求来修改和添加规则和变量。
相关问题
写个万能makefile
一个万能的Makefile应该能够支持多种编程语言和不同的目录结构。以下是一个示例Makefile:
```
# 定义编译器和编译选项
CC := gcc
CFLAGS := -Wall -Werror
# 定义源代码、目标文件和可执行文件的路径
SRC_DIR := src
OBJ_DIR := obj
BIN_DIR := bin
# 定义源代码和可执行文件的文件名
TARGET := $(BIN_DIR)/program
SRCS := $(wildcard $(SRC_DIR)/*.c)
OBJS := $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRCS))
# 编译规则
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) $^ -o $@
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJ_DIR):
mkdir -p $(OBJ_DIR)
# 清除规则
clean:
rm -rf $(BIN_DIR) $(OBJ_DIR)
.PHONY: clean
```
这个Makefile支持在`src`文件夹下编写C源代码,生成的目标文件存储在`obj`文件夹下,可执行文件存储在`bin`文件夹下。你只需要修改`CC`和`CFLAGS`变量,就可以编译其他编程语言的代码。
给我列个学习makefile的学习计划
学习makefile的学习计划可以按照以下步骤进行:
1. 了解makefile的基本概念和作用。makefile是描述编译系统所需策略的文件,通过解析makefile并执行相应命令来构建编译系统[^1]。
2. 学习makefile的语法和规则。makefile使用一种特定的语法来描述编译系统的构建过程,包括目标、依赖关系和命令等。
3. 理解makefile的目标和依赖关系。makefile中的目标是需要构建的文件或操作,而依赖关系则是指目标所依赖的文件或操作。
4. 学习makefile中的变量和函数。makefile中可以定义变量来存储常用的值,也可以使用函数来进行一些操作,如字符串处理和文件操作。
5. 掌握makefile中的规则和命令。makefile中的规则定义了目标和依赖关系之间的关系,而命令则是执行构建操作的具体命令。
6. 实践编写简单的makefile文件。通过构建一个简单的C语言项目工程,编写相应的makefile文件来理解和应用makefile的基本概念和语法。