目前分類:makefile (2)

瀏覽方式: 標題列表 簡短摘要

diff

  • diff -u file1 file2
  • diff -Nur dir1 dir2
  • find dir1 dir2 -type f ! -name '*.cpp' -print | sed -e 's|.*/||' | diff -X - -r dir1 dir2
  • diff -r dir1/ dir2/ | sed '/Binary\ files\ /d' > outputfile
  • N: 如果某個文件僅在一個目錄中出現,則假定其在另一個目錄中為空文件。
  • u: 輸出每個修改前後的3行,也可以用-u5等指定輸出更多上下文。
  • r: 子目錄也會進行比對。

patch

  • patch -p1 < aaa.patch
  • patch -p1 --dry-run < aaa.patch
  • -p1: 代表要跳過一層目錄結構。
  • --dry-run: 不會真的上補丁,而只是給你看會修改哪些檔案測試是否會成功。

台南小新 發表在 痞客邦 留言(0) 人氣()

如果在 makefile 裏要建立一個新目錄,如果該目錄已經存在了,則會發生 mkdir: cannot create directory `test': File exists 的錯誤,並且會停止執行。但有時我們並不希望執行被中斷,所以就要先判斷目錄是否存在再建立。可以利用 wildcard 函數來判斷目錄是否存在。

OUTPUT_PATH := test

all:
ifeq "$(wildcard $(OUTPUT_PATH))" ""
        mkdir $(OUTPUT_PATH)
        echo "directory not existed"
else
        echo "directory existed"
endif

另外還有一個更簡單的方法,就是直接下 make -p $(OUTPUT_PATH),-p 的用意就是當目錄存在時,不會產生錯誤。沒錯誤發生,當然執行不會被中斷囉。

台南小新 發表在 痞客邦 留言(0) 人氣()