一直知道makefile是為了讓工程更合理化編譯和輸出~
從未在unix下自己寫這個;在windows開發中一直用ide開發,ide自帶;偶而寫寫小東西,也是用bat方式直接編譯。
ps:bat方式就是自己寫編譯命令;與makefile的區別是前者無**件是否發生改變都編譯,後者是當編譯成功後若檔案未發生任何改動,不會編譯;較之於前者,後者編譯效率高的多。
以前簡單學習了makefile,沒有動手實踐過;今天有興致簡單實踐一把。
實際環境:
net cs**
nmake
編寫簡單**:helloworld
1using
system;
2using
system.collections.generic;
3using
system.text;45
namespace618
}19}20
第一次編寫makefile,如下:
1all:helloworld
.exe23
helloworld
.exe
:helloworld.cs
4csc helloworld.cs
56clean:7-
del*
.exe
直接用命令:nmake helloworld.makefile
報錯:fatal error u1034
想了半天,嘗試性的做了如下調整:
1all:helloworld
.exe23
helloworld
.exe
:helloworld.cs
4csc helloworld.cs
56clean:7-
del*
.exe
再使用命令,完全編譯通過
仔細看看兩個makefile,發現第四行和第七行有乙個空格的差異。
target...:prerequisites...
command
【總結】:
實際的格式:
target...:prerequisites...
command
另外不知道其他情況下,比如unix下是否有這個問題,也許僅僅只有nmake才有這個錯誤。有待後續測試結論
【2010-12-28】
最後,還值得一提的是,在makefile中的命令,必須要以[tab]鍵開始。
此話已說明命令在格式中的特殊起始點。上面所說" "空格不是標準的格式,可用而已
Makefile檔案基本格式
以下是makefile的基本模板 指定編譯器 cc g 指定編譯引數 cflags std c 11 指定標頭檔案路徑,此處用於指定非標準庫的標頭檔案路徑 inc i.i usr include 指定要鏈結的動態庫或靜態庫 l是指定動態庫路徑,非標準的動態庫需要此引數 libs lm ldl l m...
Makefile檔案格式
make的工作主要依賴於乙個叫makefile的檔案。makefile檔案描述了整個程式的編譯 鏈結等規則。targets prerequisites command targets 目標 prerequisites 依賴 command 命令,命令需要使用 tab 鍵空格 例 led.elf le...
makefile 程式設計一
什麼是makefile?或許很多winodws的程式設計師都不知道這個東西,因為那些windows的ide都為你做了這個工作,但我覺得要作乙個好的和professional的程式設計師,makefile還是要懂。這就好像現在有這麼多的html的編輯器,但如果你想成為乙個專業人士,你還是要了解html...