我使用中如果我通過選項在命令行中像如何使gnumake的行爲與在命令行中的默認選項通過一樣?
make OPT1=opt1 OPT1=2
我得到一個不同的行爲的makefile比我修改Makefile文件,寫有
OPT1=opt1
OPT2=opt2
,然後再運行
make
在命令行上。
我想要的行爲是我在命令行中使用選項的行爲。現在我正在使用別名,但我很想知道這是否可以純粹使用Makefile來完成。
謝謝。
我使用中如果我通過選項在命令行中像如何使gnumake的行爲與在命令行中的默認選項通過一樣?
make OPT1=opt1 OPT1=2
我得到一個不同的行爲的makefile比我修改Makefile文件,寫有
OPT1=opt1
OPT2=opt2
,然後再運行
make
在命令行上。
我想要的行爲是我在命令行中使用選項的行爲。現在我正在使用別名,但我很想知道這是否可以純粹使用Makefile來完成。
謝謝。
我最終解決,這是該方法如下:
mv Makefile Makefile.aux
然後創建一個現在的Makefile與內容
OPT1=true
OPT2=false
DEFAULT_OPTS=--no-print-directory OPT1=$(OPT1) OPT2=$(OPT2)
.PHONY : $(MAKECMDGOALS)
$(MAKECMDGOALS):
$(MAKE) -f Makefile.aux $(DEFAULT_OPTS) $(MAKEFLAGS) $(MAKECMDGOALS)
.PHONY: all
all:
$(MAKE) -f Makefile.aux $(DEFAULT_OPTS) $(MAKEFLAGS) $(MAKECMDGOALS)
我用--no-打印目錄是因爲原因如果我沒有這個選項使用這個方法,它會在開始和編譯結束時打印額外的消息。
您的make文件是否對這些變量使用origin
命令來決定是否覆蓋它們?這返回變量的原點,例如, 「環境」或「命令行」,也許makefile是寫在這些情況下做不同的事情。
你會得到不同的行爲?它有什麼不同?你可以給我們一個makefile(最簡單的一個顯示不同)嗎? – Beta 2010-10-02 05:31:42
我不認爲我可以。 makefile是相當複雜的... – skeept 2010-10-03 15:30:57
這可能是你的問題的一部分。這是偶然的遺留的makefile,它包含和/或重寫其他makefile? – Beta 2010-10-03 16:22:43