Makefile 模板
# 下面的变量可以在shell 的环境变量里面指定。
# 也可以象下面这样在 Makefile 里面指定。
# CC=gcc # 编译器
# CFLAGS=-Wall -Werror -g # 编译器参数
# LD=gcc # 连接器参数
# LDFLAGS= $(LIBS) -lpthread # 连接器参数
# DEPENDFLAG=-MM # 生成依赖关系文件的参数
# INCLUDES=-Idir1 -Idir2 # 指明包含外部头文件的目录
# LIBS=-la -lb -lc # 指明引用外部的库文件
CFLAGS:=$(CFLAGS) $(INCLUDES)
LDFLAGS:=$(LDFLAGS) $(LIBS)
#指明项目中,包含源程序的所有的子目录。
SRCDIRS=.
#指明最终生成的可执行文件的名称
PROGRAMS=test.exe
#下面的部分一般不用改动
#从所有子目录中得到源代码的列表
SRCS=$(foreach dir,$(SRCDIRS),$(wildcard $(dir)/*.c))
#得到源代码对应的目标文件的列表
OBJS=$(SRCS:.c=.o)
#得到源代码对应的依赖关系文件的列表
#依赖关系文件就是一个目标文件依赖于
#哪些头文件和源程序,依赖关系是自动
#生成的,并且用include语句包含在Makefile中
DEPENDS=$(SRCS:.c=.d)
#指明默认目标是生成最终可执行文件。
all: $(PROGRAM)
#生成依赖关系文件
%.d:%.c
$(CC) $(DEPENDFLAG) $(CFLAGS) $< |\
sed "s?\\(.*\\):?$(basename $<).o $(basename $<).d :?g" \
> $@ || $(RM) $@
$(PROGRAMS): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(filter %.o ,$+)
# 包含入依赖关系文件
include $(DEPENDS)
# 删除生成的中间文件
clean:
rm $(OBJS) $(DEPENDS) $(PROGRAMS)
分享到:
相关推荐
5. **使用Makefile模板的优势** - **可复用性**:模板简化了创建新 `Makefile` 的过程,避免重复工作。 - **标准化**:模板确保项目的构建方式一致,有利于团队协作。 - **可扩展性**:根据项目需求对模板进行...
使用Makefile模板,用户只需要根据需要配置头文件路径,库文件路径,编译器、目标文件名即可一键make,生成对应编译器平台的可执行程序
LINUX驱动Makefile模板详解 在软件开发中,编写驱动程序的Makefile是一个非常重要的步骤。Makefile是用于自动地编译、链接和安装驱动程序的脚本文件。今天,我们将详细解释LINUX驱动Makefile模板的各个部分,并对...
### 动态库Makefile模板 1. **目标设定**:`PRG = libsvrtool.so`定义了目标动态库的名称。 2. **编译器与选项**:`CC = g++`指定使用`g++`作为编译器,`CC_FLAG`设置了编译选项,例如`-D_NOMNG -D_FILELINE`。 3. ...
### 通用Makefile模板解析与应用 #### 一、Makefile概述 Makefile是一种用于自动化构建过程的脚本文件,在软件开发过程中极为常见。通过定义一系列规则,Makefile能够自动处理项目的编译、链接等任务,极大地提高...
在本案例中,我们有三个Makefile模板,分别是两个简单的模板和一个复杂的模板,用于演示不同层次的Makefile使用。 简单Makefile通常包括以下几个部分: 1. **目标(Targets)**:这是Makefile的基本构建块,如`all`...
本文将详细讲解如何利用“Makefile模板”来快速编写Makefile,并探讨其与`gcc`编译器的配合使用。 一、Makefile模板介绍 Makefile模板通常包含一系列预设的规则和变量,帮助开发者快速搭建构建环境。这些模板可能...
在给定的"Makefile.zip"压缩包中,包含了一个通用的Makefile模板,旨在简化项目构建流程。 首先,我们来看Makefile的基本结构。Makefile由目标(target)、依赖项(dependency)和命令(command)组成。目标通常是...
通用的 `Makefile` 模板旨在提供一个灵活、模块化和跨平台的解决方案,使得开发者能够在不同环境中轻松地编译和管理项目。本文将深入探讨这个模板的核心特性及其在实际开发中的应用。 首先,`Makefile` 的模块化...
Makefile模板是预定义的一系列规则和指令,用于自动化编译、链接等构建任务,极大地提高了开发效率。 Makefile是Unix/Linux环境中的一种自动化构建脚本,它定义了如何从源代码生成可执行文件或库的规则。在lwbuild...
下面我们将详细讨论如何创建和使用这些库,并提供一个基本的`Makefile`模板。 首先,让我们理解一下动态库和静态库的区别: 1. **动态库**(.so文件):在运行时被加载到内存中,多个程序可以共享同一份库文件,...
基本通用makefile模板, 目录结构 ./src ./include ./lib。 makefile和*.c文件放在 ./src 目录, 头文件放在 ./include目录, 库文件放在 ./lib目录。不需要静态编译,取消 -static。 my_main_c 替换为你需要编译的...
`template-6-10.rar_Makefile模板_linux项目`是一个专门针对Linux项目设计的`Makefile`模板,旨在帮助开发者快速搭建并维护他们的小型或中型项目。 首先,我们需要理解`Makefile`的基本结构。`Makefile`由一系列...
Makefile模板,linux下生手,半生不熟的人的好伙伴.照葫芦画瓢的好东西.