これを行う最善の方法がわかりません。この点に関するいくつかの指針が役立ちます
コード:
#Else where in different file and included in this makefile i have
LIBRARY_LIST := CONFIG_MTS_PTHREADS
CONFIG_MTS_PTHREADS := y
collect-compilation:
if [ $(strip $(CONFIG_MTS_PTHREADS)) == y ]; then \
echo "ok"; \
fi;
for compile in $(LIBRARY_LIST) ; do \
if [ $(strip $$compile) == y ]; then \
echo "ok"; \
fi; \
done
上記のコード スニペットから、上部の 'IF' ループは正常に機能し、'OK' と表示されます。表示されます。
2 番目の for ループでは、$$compile を 'IF' に置き換える際に問題が発生します。最終的には、$$compile が CONFIG_MTS_PTHREADS に置き換えられ、式が y == y と評価されて「OK」と表示されるはずですが、私にとっては.,
出力:
make -C ./Dev2.0.1/OSX
if [ y == y ]; then \
echo "ok"; \
fi;
ok <----- fine and expected
for compile in CONFIG_MTS_PTHREADS ; do \
if [ $compile == y ]; then \
echo "ok"; \
fi; \
done <------ Here it skips the then part and proceeds further, i expect 'OK' after this though.