在我的 中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 foo
echo 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))