我有以下设置:
/-
.project-name
Makefile
...
.project-name
的内容为dummy
cat .project-name
dummy
Makefile
的一个目标是set_project_name
(顾名思义)在目录周围更改(使用sed
)项目名称并调整一些路径
set_project_name:
@ag [dD]ummy -l0 | xargs -0 sed -i "s/[dD]ummy/${PROJECT_NAME}/g"
## Renombrar la carpeta del proyecto
@[[ -d dummy ]] && mv dummy/pipelines/dummy.py dummy/pipelines/$(PROJECT_NAME).py
@[[ -d dummy ]] && mv dummy $(PROJECT_NAME)
同样在Makefile
变量PROJECT_NAME
只是
PROJECT_NAME := `cat .project-name`
我想在执行.project-name
Makefile
的内容
我尝试使用
TEST_PROJECT_NAME_2 := [[ 'dummy' == $(cat .project-name) ]] && $(error "ERROR: The name of the project can not be 'dummy', please use another name")
但是不起作用,它会执行,但总是会抛出错误。
我也尝试使用ifeq
顶部的Makefile
,但两者都没有执行。我做错了什么?另外,这是最好的方法吗?
答案 0 :(得分:1)
make
使用的语言与shell使用的语法不同。像
PROJECT_NAME := `cat .project-name`
不会使PROJECT_NAME成为.project-name文件的内容(它将分配字符串“`cat .project-name`”。同样,
TEST_PROJECT_NAME_2 := [[ 'dummy' == $(cat .project-name) ]] ...
不会按照您的想法行事。要分配shell命令的标准输出,您需要使用make
语法,例如
FOOFILE := $(shell cat foo)