ファイルを生成し、ファイルの内容を変数に設定しようとしますが、変数は常に空であると見なされます。
一例:
define FILE_VAR
cat /output/1.txt >> /output/2.txt
$(eval s := $(shell cat /output/2.txt))
$(eval FILENAME_BIN=$(word 1, $(s)).$(word 2, $(s)).$(word 3, $(s)).bin)
$(eval FILENAME_JFFS2=$(word 1, $(s)).$(word 2, $(s)).$(word 3, $(s)).jffs2)
endef
これをビルド後にフック呼び出しに渡します。
# Alter the post-gen hooks, depending on what options are selected
ifneq ($(BR2_TARGET_ROOTFS_EXT2_FILE_VAR),)
ROOTFS_EXT2_POST_GEN_HOOKS += FILE_VAR
endif
実行前に存在する場合、2.txt
make が実行される前のデータ (新しいリダイレクトデータではない) に変数が設定され、2.txt
存在しないと変数は設定されません。 makeが最初に実行されたときにファイルがどのように見えるかを評価するようですが、これは私が望むものではありません。
答え1
どのように使用するのか明示していませんでしたがFILE_VAR
、いざやってみればルールを外しても好きなようにならない$(eval $(FILE_VAR))
というのが問題です。cat
梱包する方が効果的です$(shell )
。
define FILE_VAR
$(shell cat /output/1.txt > /output/2.txt)
$(eval s := $(shell cat /output/2.txt))
$(eval FILENAME_BIN=$(word 1, $(s)).$(word 2, $(s)).$(word 3, $(s)).bin)
$(eval FILENAME_JFFS2=$(word 1, $(s)).$(word 2, $(s)).$(word 3, $(s)).jffs2)
endef
$(eval $(FILE_VAR))
all:
echo $(FILENAME_BIN)
>
代わりに2.txtを使用しているので、>>
実行するたびに大きくなりません。