gpt4 book ai didi

macos - 在 OS X 上使用 Bash 命令生成文件 ifeq

转载 作者:行者123 更新时间:2023-11-29 09:47:52 27 4
gpt4 key购买 nike

我正在尝试编写一个 Makefile 来评估 Bash 命令的结果,例如 uname .

生成文件:

OS1 = $(uname)
OS2 = Darwin

all:
@echo $(value OS1)

ifeq ($(uname),Darwin)
@echo "OK"
else
@echo "Fail"
endif

ifeq ($(OS1),Darwin)
@echo "OK"
else
@echo "Fail"
endif

ifeq ($(OS2),Darwin)
@echo "OK"
else
@echo "Fail"
endif

输出:

Darwin
Fail
Fail
OK

如何比较变量 OS1或命令 $(uname)到文字 Darwinifeq 里面?据我所知,第二个 ifeq在我的 Makefile 中应该可以工作,但事实并非如此。

我在 OS X 10.9.3 上为 i386-apple-darwin11.3.0 使用 GNU Make 3.81。

最佳答案

关于 Makefile、变量和 shell 命令有很多不同的问题和答案。但事实证明,查看手册有时比搜索 Stackoverflow 更可靠。

首先,我不知道在 GNU make 中变量赋值的不同方式: https://www.gnu.org/software/make/manual/make.html#Reading-Makefiles

其次,在这种情况下需要的 shell 函数只能与 :=(立即数)运算符结合使用: https://www.gnu.org/software/make/manual/make.html#Shell-Function

因此正确的 Makefile 看起来像这样:

OS := $(shell uname)

all:
@echo $(OS)

ifeq ($(shell uname),Darwin)
@echo "OK"
else
@echo "Fail"
endif

ifeq ($(OS),Darwin)
@echo "OK"
else
@echo "Fail"
endif

关于macos - 在 OS X 上使用 Bash 命令生成文件 ifeq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23711087/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com