Next:
使用者手冊
Up:
Makefile 變數
Previous:
makefile 變數實例二
Contents
DYWANG_HOME
實機練習題
共同要求:
在家目錄下建立 zzz 目錄。
切換工作目錄到 zzz,所有練習皆存在此目錄。
下載檔案 make1.tar.gz
。
解打包壓縮 make1.tar.gz。
進入 make1 工作目錄。
每題的執行檔 target 都改成與指定的 makefile 檔名加副檔名 bin,例如:mfv1.bin, mfv2.bin, mfv3.bin ... 。
題目沒要求的,不要多做。
承上一章的 makefile mf4,新增 mfv1,所有的 .o 檔設定成變數 OBJS。
承上題 mfv1,產生 makefile mfv2
包含原 mfv1 的目標項目。
增加所有相依性法則,.o 目標項目皆不使用內建法則。
將 main.o 2.o 3.o 的「相依項目」改用內建變數
$<
,其他不要更動。
承上題 mfv2,產生 makefile mfv3,要求如下:
設定編譯器變數 CC = gcc,編譯選項變數 CFLAGS = -W。
承上題 mfv3,產生 makefile mfv4,要求如下:
包含原 mfv3 的目標項目。
使用變數
$@
產生目標項目 mfv4.bin。
增加目標項目 remove 移除產生的執行檔及所有 .o 檔,當 .o 檔不存在時忽略錯誤。
承上題 mfv4 ,產生 makefile mfv5,要求如下:
增加目標項目 mdir 建立目錄 /tmp/mfv5.mdir.test,只建一層目錄,請用最精簡方式建立。
當要建的目錄存在時忽略錯誤,使用以下命令測試生效:
make -f mfv5 mdir && echo Yes
承上題 mfv5 ,產生 makefile mfv6,要求如下:
包含原 mfv5 的目標項目。
新增目標項目 install
安裝目錄變數 DYBIN = /tmp/dywang/bin。
判斷安裝目錄 DYBIN 是否存在?如果不存在,必須先建目錄。
不要使用 if...then,判斷後以
&&
或
||
執行建立目錄即可。
判斷腳本不輸出到 stdout。
所有命令在同一個 shell。
除判斷式內腳本外,其他腳本以「前一命令成功才執行下一個命令」的方式進行。
安裝檔案已存在時,直接覆蓋。
以單一命令完成「執行檔必須所有人可執行,但都不可寫入」的設定。
目標項目 install 的法則以最精簡的腳本完成,「判斷目錄是否存在的判斷式」只做建立目錄,其他命令都不可放在判斷式中。不 echo 輸出到螢幕,一個判斷式+三個命令即可完成。