make 파일의 명령어 실행 결과를 기반으로 변수 정의

make 파일의 명령어 실행 결과를 기반으로 변수 정의

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

관련 정보