Makefile ifeq 在 MAKEFLAGS 中找不到选项

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

我的 Makefile 包含此目标:

test: J=-j
test:
    @echo "findstring = $(findstring $(J),$(MAKEFLAGS))"
    @echo "J = $(J)"
ifeq ($(findstring $(J),$(MAKEFLAGS)),$(J))
    @echo Yay Parallel
else
    @echo Boo, Not Parallel
endif

结果出乎意料,即:

danny@USAR1LPDSZB9S3:~$ make -f fsw.mak test
findstring =
J = -j
Yay Parallel
danny@USAR1LPDSZB9S3:~$ make -j -f fsw.mak test
findstring = -j
J = -j
Yay Parallel

看来我不再理解字符串相等了。注意,这不是我第一次使用 Makefile

ifeq
,你可能会认为
"" <> "-j"
,说我疯了。

makefile gnu-make
1个回答
0
投票

ifeq
在首次解析 makefile 时运行(如缺少缩进所示),而不是在配方符文时运行,因此此时尚未设置
J

© www.soinside.com 2019 - 2024. All rights reserved.