makeファイルの命令実行結果に基づいて変数を定義する

makeファイルの命令実行結果に基づいて変数を定義する

私はmakefileを使って1つずつ実行する必要があるコマンドの組み合わせをまとめようとしています。 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」というファイルを生成し、2行目は次の行で使用する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)通訳者の評価だと思います。

おすすめ記事