一个文件夹Makefile中引用本文件夹下的另一个文件夹makefile
时间: 2023-08-02 17:09:41 浏览: 54
可以在当前文件夹的Makefile中使用make命令来调用另一个文件夹的Makefile。具体方法如下:
1. 在当前文件夹的Makefile中定义一个目标,该目标的命令中使用cd命令进入另一个文件夹,然后调用该文件夹的Makefile。示例代码如下:
```
subfolder:
cd path/to/subfolder && $(MAKE)
```
其中,"subfolder"是自定义的目标名称,"path/to/subfolder"是另一个文件夹的路径,"$(MAKE)"表示调用make命令执行该目标的命令。
2. 在当前文件夹的Makefile中使用该目标。示例代码如下:
```
all: subfolder
# 执行其他命令
```
其中,"all"是默认目标,"subfolder"是上一步定义的目标名称。在执行"all"目标时,会先执行"subfolder"目标,然后执行其他命令。
需要注意的是,如果另一个文件夹的Makefile中定义了和当前文件夹中同名的目标,可能会导致冲突。此时可以在调用该目标时使用绝对路径来避免冲突。
相关问题
linux中同一文件夹下的main函数与子函数封装makefile
以下是一个示例的makefile文件,用于编译同一文件夹下的main函数和子函数:
```
CC = gcc
CFLAGS = -Wall -g
all: main
main: main.o subfunction.o
$(CC) $(CFLAGS) -o main main.o subfunction.o
main.o: main.c
$(CC) $(CFLAGS) -c main.c
subfunction.o: subfunction.c subfunction.h
$(CC) $(CFLAGS) -c subfunction.c
clean:
rm -f *.o main
```
说明:
- CC:编译器选项,这里指定为gcc。
- CFLAGS:编译选项,这里指定为-Wall和-g,分别表示开启所有警告和调试信息。
- all:指定编译目标为main。
- main:指定编译main程序,依赖于main.o和subfunction.o。
- main.o:指定编译main.o,依赖于main.c。
- subfunction.o:指定编译subfunction.o,依赖于subfunction.c和subfunction.h。
- clean:指定清除编译结果的操作,包括.o文件和main程序。
使用方法:
1. 把上述makefile文件保存为名为Makefile的文件。
2. 在同一文件夹下准备好main.c和subfunction.c和subfunction.h这三个文件。
3. 在命令行中输入“make”,即可开始编译。
4. 编译完成后,会生成一个名为main的可执行文件。
5. 若需要清除编译结果,可以在命令行中输入“make clean”。
makefile包含当前文件夹下头文件目录 规则
在 Makefile 中,可以通过设置变量来包含当前文件夹下的头文件目录。具体的规则如下:
1. 定义头文件搜索路径变量:可以使用变量来存储头文件搜索路径,比如:
```
INCDIR = -I./include
```
这样就定义了一个名为 INCDIR 的变量,表示头文件搜索路径为当前文件夹下的 include 目录。
2. 在编译命令中添加头文件搜索路径:可以在编译命令中使用上述定义的变量来添加头文件搜索路径,比如:
```
gcc -c $(INCDIR) main.c -o main.o
```
这样就会将当前文件夹下的 include 目录添加到头文件搜索路径中。
3. 自动化变量 $< 和 $@:为了避免重复输入文件名,可以使用自动化变量 $< 和 $@ 来代表当前正在编译的源文件和目标文件,比如:
```
%.o: %.c
gcc -c $(INCDIR) $< -o $@
```
这样就会自动将当前文件夹下的 include 目录添加到头文件搜索路径中,编译当前源文件并生成对应的目标文件。
以上就是在 Makefile 中包含当前文件夹下头文件目录的规则。