VS 的makefile工程

自從IDE 的出現簡化了代碼文件之間關聯性管理後,就沒多少願意用makefile 管理工程的了。makefile 的語法規則也不復雜,加上後續的automake 讓編寫的東西又簡化了不少,但是相比IDE 點一下build 的操作來說依然是沒有可比性的。各個平臺下的IDE 對工程文件的規則都不一樣,想要工程跨平臺唯一適合互通的也就只有makefile 了,想必這也是目前makefile 還依然活躍的重要理由之一吧。

微軟的IDEVC 6 以後就越發的對makefile 不友好了,之前的導入導出操作在後續的VS 裏都沒了,估計總覺得GNU Make 不適合壟斷吧,搞了個NMake 的標準,非但沒GNU Make 靈活(嵌套層次支持少,不支持單字符變量)自個的VS 支持起來也不順。

但凡免費的第三方庫,大都只提供makefile 而不提供. vcproj, 搞得想在VS 裏編個庫用用還得自己組織一邊,大工程搞起來甚爲麻煩。筆者被反反覆覆的轉工程折騰幾次後,似乎找到了個救命稻草- VS makefile project

這種工程並不能幫你簡化編寫 makefile 的過程,也不能幫你導出已有 vcproj 工程到一個 makefile 裏, 它的目的很簡單就是把符合NMake 規則的makefile 和代碼文件拽到一個虛擬的文件夾裏,方便習慣了用solution explorer(SE) 的人來修改管理這些東西,調用cl.exelink.exe 來執行makefile 的內容生成當前平臺下的目標文件(exe|lib|dll) 。與其他工程不一樣的是即便加到solution explorer 裏,源文件並不會編譯中間代碼。

基於以上目的,該工程的Wizard 也很是簡陋:

 

 

其實算得上有用的也是左邊的3command line, 這裏需要填寫的是nmake xxxxmakefile 裏定義的某個目標,一般來說makefile 裏都會有allclean2 個目標,rebuild 無非是把clean + all 放一起就行了。還得去掉默認的輸出,要不和makefile 裏的重複了。點擊finish 以後就可以把工程裏的所有文件按你的習慣加入到SE 中了,需要注意的一點是如果不想寫太複雜的command, 需要保證makefile 文件的命名爲makefile( 大小寫均可) ,並放在該vcproj 文件同級目錄。

從一個makefile 工程到vs 裏的簡化流程應該如下:

1 在源文件夾中頂級目錄下makefile (一般每個子目錄下都會有個makefile )所在位置創建該工程vcproj.

2 makefile 中的目標填寫command line

3 把工程中需要修改或管理的文件按習慣加入到solution explorer

4 點擊編譯,如果失敗就得按照output 的提示適當修改makefile ,常見的問題都是makefile 裏有不符合nmake 規則或是編譯標誌設置的是gcc 環境的那些宏和變量等等。( 如果工程裏有帶.nmake 後綴的文件, 果斷重命名替換原有的makefile)

 

- ------------------------------------------- ------------------------------------------- ------------------------------------------

這種工程的用法,其實跟命令行方式下,使用nmake是一模一樣的。因爲該工程並不會追蹤makefile中任何文件的信息,對他來說,它的一切關心的便是MAKEFILE,所以MAKEFILE不變,他的一切行爲也不會改變。

並且在工程中任何作出的修改,也不會修改MAKEFILE。

基本上,該工程存在的意義就變成了,僅僅作爲一個文件瀏覽器的前端。就像windows自帶的explorer一樣。其他,它全不關心。

 

對一個第三方庫的輕量級修改的話,還是有用的!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章