makefile如何一次inlcude在所有子makeifle可用
时间: 2024-09-10 11:02:17 浏览: 37
Makefile自动搜所目录及子目录下的的所有文件、自动生成编译目录
在Makefile中,如果你希望将某些通用的规则或者变量声明一次,然后让它们在所有子Makefile中都可以使用,你可以通过几种方法来实现。
一种常见的方法是在主Makefile中定义好变量或者规则,然后在每个子Makefile中通过包含(include)这些变量或者规则的方式来共享。这通常涉及到在主Makefile中创建一个包含通用规则和变量的文件,然后让所有的子Makefile都去包含(include)这个文件。
例如,假设你有一个名为`common.mk`的文件,其中定义了变量和规则。在主Makefile中,你可以这样做:
```makefile
# common.mk 包含了通用规则和变量定义
include common.mk
# 子目录列表
SUBDIRS = dir1 dir2 dir3
# 遍历子目录,为每个子目录执行make命令
$(SUBDIRS):
$(MAKE) -C $@
all:
# 这里可以定义一些需要在所有子目录中执行的规则
```
然后,在每个子目录的Makefile中,你可以这样包含`common.mk`:
```makefile
# 包含主Makefile中的通用规则和变量
include ../common.mk
# 定义该目录特有的规则
# ...
```
在所有子Makefile中包含`common.mk`后,主Makefile中定义的变量和规则都会在子Makefile中生效。
另一种方式是使用Make的内置函数`$(eval ...)`或者`define`来动态地定义规则和变量,然后在每个子Makefile中通过`$(value ...)`来引用这些动态定义的内容。
阅读全文