目前分類:makefile (3)

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

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: 子目錄也會進行比對。

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

ln -s 在使用時最好使用絕對路徑,而剛好我在寫一個範例是使用相對路徑,找了好久才找到用法,其實也很簡單的。先用 cd 切換到該目錄,再用 pwd 取得該目錄的字串。

ln -s `cd test1/test;pwd` /usr/local/test

如果要在 script 中使用,則記得要先保留原始目錄,最後要記得切換回來,才不會造成不可遇期的問題喔。並不需要保留原始目錄。

台南小新 發表在 痞客邦 PIXNET 留言(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 的用意就是當目錄存在時,不會產生錯誤。沒錯誤發生,當然執行不會被中斷囉。

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