gpt4 book ai didi

bash - 将 makefile 变量值分配给 bash 命令结果?

转载 作者:行者123 更新时间:2023-11-29 08:41:15 25 4
gpt4 key购买 nike

我正在尝试将此命令的输出(在我的 makefile 中)分配给 makefile HEADER var,如下面的代码行所示:

HEADER = $(shell for file in `find . -name *.h`;do echo $file; done)

问题是如果我使用以下方法在我的 makefile 中打印 HEADER:

print:
@echo $(HEADER)

我明白了

ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile ile

如果我直接在控制台中运行此命令,并且直接在我的 makefile 所在的位置:

myaccount$ for file in `find . -name *.h`;do echo $file; done
./engine/helper/crypto/tomcrypt/headers/._tomcrypt_pk.h
./engine/helper/crypto/tomcrypt/headers/tomcrypt.h
./engine/helper/crypto/tomcrypt/headers/tomcrypt_argchk.h
./engine/helper/crypto/tomcrypt/headers/tomcrypt_cfg.h
./engine/helper/crypto/tomcrypt/headers/tomcrypt_cipher.h
./engine/helper/crypto/tomcrypt/headers/tomcrypt_custom.h
./engine/helper/crypto/tomcrypt/headers/tomcrypt_hash.h
./engine/helper/crypto/tomcrypt/headers/tomcrypt_mac.h
....

所以我得到了我所有的头文件。我这样做是为了避免在我的 makefile 中手动指定所有 .h 文件。

有什么想法吗?

最佳答案

您需要在 shell 命令中对 $ 字符进行两次转义:

HEADER = $(shell for file in `find . -name *.h`;do echo $$file; done)

这里的问题是 make 会尝试将 $f 扩展为变量,但由于它没有找到任何东西,所以它只是将其替换为“”。这使您的 shell 命令只剩下 echo ile,它忠实地做到了这一点。

添加 $$ 告诉 make 在该位置放置一个 $,这会导致 shell 命令看起来完全符合您的要求。

关于bash - 将 makefile 变量值分配给 bash 命令结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2373081/

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