這篇文章是上一篇文章(http://www.cnblogs.com/LCCRNblog/p/4532643.html)的補充,因此需要先看看上一篇文章。
最近在寫代碼的時候,需要通過命令的方式來執行生成的c++源代碼文件,因此需要學習有關windows環境下如何使用命令來編譯連接c++原文件。這一篇文章是自己慢慢摸索實踐得出的。作為自己入門的起點吧,后續還要好好深入理解這方面的知識。
1、准備
編寫好main.cpp header.h header.cpp這三個源代碼文件,並放入一個文件夾test中。
2、編寫NMake文件
在test文件夾中創建hello.mk文件,並寫入如下腳本
foo :main.obj header.obj cl.exe -EHsc main.obj header.obj -o foo main.obj:main.cpp cl.exe -EHsc -c main.cpp header.obj:header.h header.cpp cl.exe -EHsc -c header.cpp clean: del *.obj *.exe
注意腳本中空格需要保留,不能隨意添加和刪除。至於為什么,我暫時也不太清楚,后續慢慢了解學習。
-----------------------------------------------------------------------------補充 2015年5月29日17:17:56------------------------------------------------
第二行cl.exe -EHsc main.obj header.obj -o foo,這一行-o之前的參數都是傳遞個cl.exe的,-o之后的參數(包括-o)是傳遞個Link.exe的。
----------------------------------------------------------------------------------------------------------------------------------------------------------
我在實踐的過程中,把”header.obj:header.h header.cpp“這一行中的header.h去掉,重新執行這個腳本文件,任然能夠通過,這個原因我暫時還不太清楚,因為我也只是剛剛接觸這方面的知識,還需要進一步的嘗試,進一步的理解其中的原理。
然后在打開cmd,定位到test文件路徑,首先執行vcvarsall.bat(方法在上一篇文章中有涉及),然后執行如下命令
NMake /f hello.mk
在test文件夾中就會生成foo.exe可執行文件。
如果執行如下命令
NMake /f hello.mk clean
則在test文件夾中生成的所有*.obj和*.exe都會被刪除。