我有一個makefile,它回圈一些像這樣的專案:
all:
for i in \
foo \
bar \
baz \
; do \
echo $$i ;\
done
在除錯時,我經常注釋掉除一條回圈線之外的所有回圈線,但隨后我需要將這些線移到 . 上方for,否則我會收到此錯誤:
/bin/sh: 3: Syntax error: word unexpected (expecting "do")
問題:有沒有更好的方法來設定它,可以輕松地在 makefile 中注釋掉回圈行?注意:我不想為每個回圈專案創建單獨的目標。
uj5u.com熱心網友回復:
您正在使用續行(尾隨反斜杠),因此您的配方等效于:
for i in foo bar baz; do echo $$i ; done
你不能只是#在這一切的中間放下 a,make 會忽略這條線,你會破壞你的線連續性。您必須找到與外殼兼容的方式。例如,如果你的 shell 是 bash,并且評論一個專案包括在前面加上一個-:
all:
@for i in \
foo \
-bar \
baz \
; do \
[[ "$$i" != -* ]] && echo $$i ;\
done
演示:
$ make
foo
baz
uj5u.com熱心網友回復:
還有很多其他方法可以做到這一點,這完全取決于您想要什么。此外,由于我們沒有您的實際 makefile,只是一個示例,因此尚不清楚實際的 makefile 是否提供了其他使事情變得更好的機會。我不知道任何客觀上完全比在所有情況下移動線路更好的方法。
由于您使用的是 make,一個想法是使用 make 變數預先創建回圈的內容,如下所示:
DATA =
DATA = foo
DATA = bar
DATA = baz
all:
for i in $(DATA); do \
echo $$i ;\
done
現在您可以注釋掉DATA = ...您不想要的行。
uj5u.com熱心網友回復:
另一種可能性是使用變數,并過濾掉不需要的條目:
list=foo bar baz
all:
@for i in $(filter_out bar,$(list)); do \
echo $$i
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/462007.html
