這篇文章中,不會介紹具體的CMake相關(guān)的內(nèi)容,具體的知識,請看文末鏈接的文章.這篇文章,介紹的是我在打算從頭構(gòu)建一個HTTP服務(wù)器時,遇到的問題.
前一段時間,從<Beginning LInux Programming>中學(xué)到了很多C編程的知識,最大的收獲,就是現(xiàn)在看C代碼,不會云里霧里了.然而,當(dāng)我想仿照Lighttpd來做一個HTTP服務(wù)器時,發(fā)現(xiàn)之前真是too young, too naive.以為會點C庫就走遍天下無敵手了.
在研究Lighttpd的源代碼時,發(fā)現(xiàn)出現(xiàn)了兩個之前沒見過的東西,一個是automake,一個是cmake.這兩個東西搞得我很懵逼.
Google這兩個東西,先用英文搜索,發(fā)現(xiàn)文檔很少,相關(guān)的文章也不多.一度灰心喪氣.
后來,分析出,在開發(fā)的過程中,應(yīng)該使用CMake,automake這個GNU AutoTools工具,應(yīng)該是打包時用的.
于是,就先著重學(xué)習(xí)CMake.這次嘗試在Google上用中文搜索.好幸運,搜索出來的第一篇,就很好的介紹了CMake.
C編程,難點應(yīng)該是我們用其他高級語言時忽略的一個問題,就是可移植性.現(xiàn)在我們必須處理各種平臺之間的不兼容性,比如,庫的差異等.即使已經(jīng)有一些自動化工具,比如上面的Automake已經(jīng)幫我們做了好多工作,我們開發(fā)起來,還是有些困難的.
而C編程,卻是現(xiàn)在我必須要學(xué)會的一個語言.除去之前的文章介紹的那些原因,更重要的是,很多東西都是用C語言來開發(fā)的,比如Redis, Memcached, Nginx, Lighttpd,要想對它們進行定制化開發(fā),就必須深入的了解C編程.
這也是第一次真正的剖析一個成熟的系統(tǒng),沒有什么經(jīng)驗.需要了解一些使用gdb來調(diào)試系統(tǒng)的方法.
CMake入門實戰(zhàn):http://hahack.com/codes/cmake/