从 FreeBSD 生成文件中的 CFLAGS 中删除标志

pol*_*oDD 4 freebsd makefile cflags bmake

在 GNU makefile 中,可以使用 filter-out 从 CFLAG 中删除标志,如下所示:

CFLAGS:=$(filter-out -flag,$(CFLAGS))
Run Code Online (Sandbox Code Playgroud)

但是,我不能让它与 FreeBSD 生成文件一起工作。

FreeBSD 支持过滤掉吗?否则,我该怎么做才能从 makefile 中的 CFLAGS 中删除特定标志?

uzs*_*olt 5

是的,FreeBSD 的 Makefile 中有类似filter-out的功能,但语法不同:

:Npattern 这与 `:M' 相同,但选择所有不匹配模式的单词。

人做

用法示例:

CFLAGS= -foo -bar -flag

all:
    @echo ${CFLAGS}
    @echo ${CFLAGS:N-flag}
Run Code Online (Sandbox Code Playgroud)

输出:

$ make
-foo -bar -flag
-foo -bar
Run Code Online (Sandbox Code Playgroud)