Linux與windows下makefile的不同之處

今日做了一個Linux下makefile移植到windows的任務,踩了不少坑,在此記錄一下,希望幫到廣大的網友們。

基本的makefile語句如下,由target、dependency還有命令組成。

target: dependency
    echo 'makefile'
    ......
    shell language more

迴歸主題,makefile本身設計爲跨平臺了,在Linux與windows上使用makefile並沒有什麼區別。但問題在於makefile所有的命令都要調用shell來執行的,每一行的命令(如上面的 echo 'makefile')  都會調用一個shell進程進行解釋。注意是每一行。

既然命令的調用shell來執行的,那麼makefile跨平臺的移植重點就在 shell命令的移植了。所以,所有的shell命令都要注意,不然分分鐘報錯“命令語法不正確”,不要想當然以爲命令不可能有錯。(:這在Linux上執行得好好的,爲什麼要windows下就不行了呢?)

 

在此列舉一些Linux的bash 與 windows的cmd命令不一樣的地方,由於代碼在公司,我只好憑藉記憶,大家體諒下;

  1. mkdir 命令在Linux下是有 mkdir -p 選項的,但是在windows下的cmd就沒有,執行 mkdir -p $(dir),cmd會幫你創建 -p目錄。
  2. for 語句是有挺大區別的。
  3. 還有一個很重要的就是文件的分割符號,windows下是 \,Linux下的  /,如果這兩個斜槓沒有統一好,很容易出現目錄或文件找不到的錯誤

 

總結

  1. 將所有bash命令改爲windows的bat批處理命令,或者你可以在makefile中指定使用bash。
  2. 注意目錄的分隔符,一個目錄需要有同一的目錄分隔符。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章