1. 程式人生 > >巢狀執行MAKE $(MAKE) -C subdir

巢狀執行MAKE $(MAKE) -C subdir

subsystem:
            cd subdir && $(MAKE)

其等價於:

    subsystem:
            $(MAKE) -C subdir


這句是Makefile的規則:這裡的$(MAKE)就相當於make,-C 選項的作用是指將當前工作目錄轉移到你所指定的位置

===============================================================================================


subsystem:

      cd subdir && $(MAKE) MAKEFLAGS=

 

此規則取消了子make執行式的命令列選項(將變數的值賦為空)。

在執行make的同時可以通過命令列來定義一個變數,像上例中的那樣;前邊已經提到過,這種變數是藉助環境“MAKEFLAGS”來傳遞給多級呼叫的子make程序的。其實真正的命令列中的變數定義是通過另外一個變數“MAKEOVRRIDES”來記錄的,變數“MAKEFLAGS”引用此變數,因而命令列中的變數定義就可以被記錄在環境變數“MAKEFLAGS”中被傳遞下去。當不希望將上層make在命令列中定義的變數傳遞給子make時,就可以在上層Makefile中把“MAKEOVERRIDES”賦空來實現(MAKEOVERRIDES=)。
--------------------- 
作者:rongwenbin 
來源:CSDN 
原文:https://blog.csdn.net/rongwenbin/article/details/23745059 
版權宣告:本文為博主原創文章,轉載請附上博文連結!