一:
case = case1
all:${case}
#test wildcard ,patsubst
#source := $(wildcard *.c) $(wildcard *.cc)
source := $(wildcard *.c)
#objs := $(patsubst %.c,%.o,$(patsubst %.cc %.o,$(source)))
objs := $(patsubst %.c,%.o,$(source))
kobjs := $(filter k%.o,$(objs))
mobjs := $(filter m%.o,$(objs))
case1:$(objs)
cc -o mdis $(mobjs)
cc -o kdis $(kobjs)
rm *.o
$(objs):%.o:%.c
$(CC) -c $(CFLAGS) $< -o $@
二:
case = case1
all:${case}
#test wildcard ,patsubst
#source := $(wildcard *.c) $(wildcard *.cc)
source := $(wildcard *.c)
#objs := $(patsubst %.c,%.o,$(patsubst %.cc %.o,$(source)))
objs := $(patsubst %.c,%.o,$(source))
case1:$(objs)
cc -o dis $(objs)
rm *.o
$(objs):%.o:%.c
$(CC) -c $(CFLAGS) $< -o $@
分享到:
相关推荐
在这个名为"简单makefile工程"的项目中,我们关注的核心是Makefile的使用,以及如何进行交叉编译,创建静态库和动态库,同时处理多个编译目标。以下是对这些知识点的详细解释: 1. **Makefile**:Makefile是用于...
下面是一个简单的`Makefile`示例,展示了如何编译这些文件: ```makefile CC = gcc CFLAGS = -Wall -g OBJS = server.o client.o tcp_utils.o all: server client server: server.o tcp_utils.o $(CC) $(CFLAGS...
为了正确地执行编译任务,Makefile 需要获取以下两方面信息: - **可执行文件和各程序模块之间的相互关系**:这包括了解哪些源文件需要被编译成目标文件(.o 文件),以及这些目标文件是如何组合成最终的可执行文件...
在这个简单的`Makefile`示例中,我们将探讨`Makefile`的基本结构、规则以及如何使用它来编译和链接C/C++程序。 首先,`Makefile`由一系列规则组成,每条规则定义了一个目标(通常是可执行文件或库),并指明了如何...
主Makefile会`include`这两个子Makefile,并根据子Makefile定义的规则来构建对应的库或可执行文件。 为了有效地利用多个Makefile,我们需要了解几个关键概念: 1. **目标和依赖**:`target: dependencies`格式定义...
1. **获取信息**:Makefile 需要获取的信息主要包括两个方面: - 可执行文件及程序模块之间的相互关系。 - 文件的修改日期。 2. **解析规则**:Makefile 定义了一系列规则来指定文件的编译顺序。这些规则包括哪些...
虽然这两个 `Makefile` 文件可能有相似的目标,但它们可能在变量定义、规则制定、编译选项或命令上有所不同。例如: 1. **变量定义**:一个 `Makefile` 可能会使用预定义的变量,如 `CC`(编译器)、`CFLAGS`(C...
下面是一个简单的Makefile示例,用于编译名为`main.c`的源文件: ```makefile all: main main: main.o gcc -o main main.o %.o: %.c gcc -c $$@ ``` 3.3 make是如何工作的 make程序会检查目标文件的修改时间...
本文主要围绕两个核心概念——目标(target)和依赖(dependency)展开,帮助读者理解和驾驭Makefile。 1. **目标(Target)** 目标定义了我们希望通过运行`make`命令实现的结果。这可能是编译、链接或执行的任何...
这个简单的Makefile测试程序旨在帮助你理解Makefile的基本结构和用法,但实际项目中,Makefile可能会包含更复杂的规则、条件判断、函数调用等,以满足大型项目的需求。通过不断地实践和学习,你可以掌握编写高效、可...
- **编译流程**:程序的编译通常分为两个阶段:首先是将源代码文件编译成中间代码文件(.o 或 .obj 文件),然后是将这些中间代码文件链接成可执行文件。 - **依赖性处理**:Makefile 核心处理的是文件之间的依赖性...
假设有一个简单的C语言程序,包含`main.c`和`foo.c`两个源文件,我们想要创建一个名为`myprogram`的可执行文件。 ```make CC=gcc CFLAGS=-Wall all: myprogram myprogram: main.o foo.o $(CC) -o $@ $^ $(CFLAGS...
2. **一个示例**:以下是一个简单的Makefile示例: ``` all: main.o foo.o bar.o gcc -o program main.o foo.o bar.o main.o: main.c gcc -c main.c foo.o: foo.c foo.h gcc -c foo.c bar.o: bar.c bar.h...
例如,一个简单的Makefile可能包含如下规则: ```makefile program: main.c func.c gcc -o program main.c func.c ``` 这个例子中,`program`是目标,`main.c`和`func.c`是依赖项。当`main.c`或`func.c`发生变化...
在编程过程中,源代码需要经过编译和链接两个步骤才能生成可执行文件。编译是将源代码转换为中间目标文件(通常为`.o`文件)的过程,而链接则是将多个目标文件以及库文件合并成最终的可执行文件。Makefile可以自动...
第二章“GNUmake介绍”具体介绍了Makefile的基础知识,包括Makefile的简要说明、规则介绍以及一个简单的示例。此外,本章还详细描述了make的工作原理、如何在makefile中指定变量、自动推导规则、另类风格的makefile...
例如,一个简单的Makefile可能如下所示: ```makefile CC = g++ CFLAGS = -Wall all: a b c a: a.cpp a.h $(CC) $(CFLAGS) -o a a.cpp b: b.cpp b.h $(CC) $(CFLAGS) -o b b.cpp c: c.cpp c.h $(CC) $...
通过一个简单的C语言项目`hello_world`,我们可以看到如何编写一个`makefile`: ```makefile CC = gcc CFLAGS = -Wall all: hello_world hello_world: main.o $(CC) $(CFLAGS) -o $@ $< main.o: main.c $(CC) $...
比如,`program: main.o utils.o` 指出`program`依赖于`main.o`和`utils.o`两个对象文件。 3. **规则(Rule)**:规则定义了如何生成目标。通常,规则由命令行组成,这些命令行告诉`make`如何从依赖项构建目标。...