我正在尝试使用 makefile 来捆绑应该依次运行的命令组合。 make 文件的一部分如下所示;
.PHONY: dispersion
all: dispersion
-include make.in
dispersion:
phonopy --qe -d --dim='$(nx) $(ny) $(nz)' -c $(material)_primitive.in
$(eval VAR=$(shell grep nat supercell.in))
echo $(VAR)
基本上,第一行创建一个名为“supercell.in”的文件,第二行创建一个名为 VAR 的变量,该变量将在后续行中使用。上面没有给变量赋值,我猜这是由于行执行的优先级所致。我希望知道解决这个问题的方法。
答案1
尝试使用反引号运算符来运行命令。
.PHONY: dispersion
all: dispersion
-include make.in
dispersion:
phonopy --qe -d --dim='$(nx) $(ny) $(nz)' -c $(material)_primitive.in
$(eval VAR=`grep nat supercell.in`)
echo $(VAR)
我相信问题是$(shell)
由于口译员评估时造成的。