makefile 中的$(dir) 是什么指令
时间: 2024-05-10 22:14:03 浏览: 14
在 Makefile 中,$(dir) 是一个内置的函数,用于获取指定路径中的目录部分。它可以接受一个路径参数,返回该路径中最后一个目录分隔符之前的部分,如果没有目录分隔符,则返回空字符串。例如,$(dir src/main.c) 返回的结果是 src/。在 Makefile 中,$(dir) 可以用于构建目标文件的输出目录,例如:
```
OBJ_DIR := obj/
SRC_FILES := $(wildcard src/*.c)
OBJ_FILES := $(addprefix $(OBJ_DIR), $(notdir $(SRC_FILES:.c=.o)))
$(OBJ_DIR)%.o: src/%.c
gcc -c $< -o $@
```
其中,$(addprefix $(OBJ_DIR), $(notdir $(SRC_FILES:.c=.o))) 用于构建所有目标文件的输出路径,$(dir) 可以用于获取这个路径中的目录部分。
相关问题
all : CHECK_DIR $(SUBDIRS)
这是一个 Makefile 文件中的指令,其中 all 是一个目标,表示执行所有指定的子目录中的内容,而 CHECK_DIR 和 $(SUBDIRS) 则是规则,表示检查目录是否存在并执行包含在子目录中的所有内容。更具体地说,CHECK_DIR 是一个变量,用于检查指定的目录是否存在,而 $(SUBDIRS) 是一个变量,用于定义所有子目录的列表,以便在 Makefile 文件中执行相关的命令。
makefile 参数化
在Makefile中,参数化可以通过使用命令行参数和变量来实现。其中,命令行参数可以通过使用"-C DIR"指定目录,进入到目录DIR后执行make命令;"-f=FILE"或"--file=FILE"或"--makefile=FILE"可以指定特定的Makefile文件进行执行;"-I DIR"或"--include-dir=DIR"可以指定包含Makefile的搜索目录,使得在Makefile中使用"include"时可以在DIR目录下进行搜索。
另外,可以使用变量来实现参数化。在Makefile中,可以定义变量来存储常用的参数或目录路径,以便在整个Makefile中重复使用。通过在Makefile中使用变量,可以提高可维护性和灵活性。变量可以通过使用"="或":="进行赋值,然后在后续的规则中使用。在Makefile中使用变量可以将参数与具体的规则分离,使得Makefile更加灵活和可配置。
此外,还可以使用include指令来引用其他的Makefile文件,类似于C语言的#include。当在Makefile中遇到include指令时,会暂停当前Makefile的读取,去读取include指定的文件,待读取结束后再继续读取当前Makefile文件的内容。这样可以将参数化的内容存储在单独的Makefile文件中,方便维护和管理。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [基础知识:篇4-make工具与Makefile文件概念](https://blog.csdn.net/weixin_42645653/article/details/116157770)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [makemake:为模块化Fortran程序生成Makefile](https://download.csdn.net/download/weixin_42127783/16731817)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)