定義命令包

來源:互聯網
上載者:User

定義命令包

如果Makefile中出現一些相同命令序列,那麼我們可以為這些相同的命令序列定義一個變數。定義這種命令序列的文法以“define”開始,以“endef”結束,如:

define run-yacc

yacc $(firstword $^)

mv y.tab.c $@

endef

這裡,“run-yacc”是這個命令包的名字,其不要和Makefile中的變數重名。在“define”和“endef”中的兩行就是命令序列。這個命令包中的第一個命令是運行Yacc程式,因為Yacc程式總是產生“y.tab.c”的檔案,所以第二行的命令就是把這個檔案改改名字。還是把這個命令包放到一個樣本中來看看吧。

foo.c : foo.y

$(run-yacc)

我們可以看見,要使用這個命令包,我們就好像使用變數一樣。在這個命令包的使用中,命令包“run-yacc”中的“$^”就是“foo.y”, “$@”就是“foo.c”(有關這種以“$”開頭的特殊變數,我們會在後面介紹),make在執行命令包時,命令包中的每個命令會被依次獨立執行。

原文

http://wiki.ubuntu.org.cn/index.php?title=%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99Makefile:%E4%B9%A6%E5%86%99%E5%91%BD%E4%BB%A4&variant=zh-hant

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.