Makefile文件 - 在一个变量执行的规则,每场

问题描述 投票:0回答:1

我有我的项目二进制文件位于我的版本库的根,有一个Makefile用于构建沿。 这个二进制使用了很多我自制的图书馆,位于我lib/文件夹

对于建筑(和清洁)我的仓库的二进制文件的目的,我要实现以下执行:

相反,硬编码以下命令行,

clean_binaries:
    make -C clean lib/folder1 -s
    make -C clean lib/folder2 -s
    make -C clean lib/another_folder -s

我创建BIN_PATH变量,包含前一路径。

BIN_PATHS = lib/folder1 \
            lib/folder2 \
            lib/another_folder

而且犯了这样一个简单的规则:

clean_binaries: $(BIN_PATHS)
    make -C clean $< -s

但只执行对变量的第一场(lib/folder1),这是不是我想做的事就行了。

我想过使用隐含规则(?),就像我编译.c文件,但我无法得到它的权利。 最后,我只是不知道如何执行规则给定变量的各个领域,这一个Makefile中,如果有任何的方式来做到这一点。

谢谢您的回答 :]

makefile
1个回答
0
投票

你GNU make来生成命令序列由字段变量变化的方式是使用foreach function,例如

Makefile文件

BIN_PATHS := lib/folder1 lib/folder2 lib/another_folder

.PHONY: clean_binaries

clean_binaries:
    $(foreach path,$(BIN_PATHS),make -C $(path) clean ;)

它运行,如:

$ make
make -C lib/folder1 clean -s; make -C lib/folder2 clean -s; make -C lib/another_folder clean -s;

不需要壳回路。

还需要注意的是,你需要更正:

make -C clean <directory>

至:

make -C <directory> clean
© www.soinside.com 2019 - 2024. All rights reserved.