如何在 Makefile 中使用 cat 创建的变量中进行字符串替换?

如何在 Makefile 中使用 cat 创建的变量中进行字符串替换?

在我的 中Makefile,我根据文件的内容分配一些变量,并且我想通过对文件内容进行字符串替换来定义一个新变量。

我的项目目录中有一个名为的文件,.file-a其中包含以下内容:

foo-bar

我的Makefile看起来像这样:

FILE_A_NAME := .file-a
FILE_A_CONTENTS := `cat $(FILE_A_NAME)`
NEW_VAR := $(subst -,_, $(FILE_A_CONTENTS))

.PHONY: foo
foo: 
    @echo $(NEW_VAR)

我想make fooecho foo_bar,但相反,我得到:

cat: .file_a: No such file or directory

似乎NEW_VAR是在进行替换FILE_A_NAME。我怎样才能让替代品发挥作用FILE_A_CONTENTS

答案1

您需要使用该shell函数来运行cat

FILE_A_CONTENTS := $(shell cat $(FILE_A_NAME))

相关内容