Makefileの関数が条件を無視して予期せず実行されるように見える場合

Makefileの関数が条件を無視して予期せず実行されるように見える場合

これは簡単な方法ですが、好きなようには機能しません。

$(eval PkgName := $(shell pacman -Qq zsh | awk '{print $$1}'))

$(if ifeq ($(strip ${PkgName}),), pacman -Sy --noconfirm zsh)

私が望むのは、以前にインストールされていなかったパッケージをインストールすることだけです。システムにパッケージがない場合、インストールは正常に実行されます。ただし、インストールされていても実行されます。

私は同じ結果でGNU make条件付きifeqを試しました。

パッケージがシステムにすでに存在する場合、パッケージが実行されないようにする方法は?

ベストアンサー1

次のように書くことができます。

$(eval PkgName := $(shell pacman -Qq zsh | awk '{print $$1}'))

$(if ${PkgName},,pacman -Sy --noconfirm zsh)

これにより、エラーなしですべての操作が実行されます。

もう一度ありがとうございます。これが将来的に誰かに役立つことを願っています。

おすすめ記事