나는 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)
통역사 평가 때문이라고 생각합니다.