cmake 使用
檢視本機是否安裝cmake
安裝cmake(以centos6.5舉例)
首先讓我們從最簡單的**入手,先來體驗下cmake是如何操作的。編寫main.c,如下
然後在main.c相同目錄下編寫cmakelists.txt,內容如下,
第一行意思是表示cmake的最低版本要求是2.8,我們安裝的是2.8.12;第二行是表示本工程資訊,也就是工程名叫demo;第三行比較關鍵,表示最終要生成的elf檔案的名字叫main,使用的原始檔是main.c
在終端下切到main.c所在的目錄下,然後輸入以下命令執行
再來看看目錄下的檔案,
可以看到成功生成了makefile,還有一些cmake執行時自動生成的檔案。
然後在終端下輸入make並回車,
可以看到執行cmake生成的makefile可以顯示進度,並帶顏色。再看下目錄下的檔案,
可以看到我們需要的elf檔案main也成功生成了,然後執行main,
執行成功!
注: 如果想重新生成main,輸入make clean就可以刪除main這個elf檔案。
接下來進入稍微複雜的例子:在同乙個目錄下有多個原始檔。檔案及原始碼如下
修改cmakelists.txt,在add_executable的引數裡把其他原始檔加進來
然後重新執行cmake .生成makefile
執行make,
然後執行重新生成的elf檔案main
執行成功!
可以類推,如果在同一目錄下有多個原始檔,那麼只要在add_executable裡把所有原始檔都新增進去就可以了。但是如果有一百個原始檔,再這樣做就有點坑了,無法體現cmake的優越性,cmake提供了乙個命令可以把指定目錄下所有的原始檔儲存在乙個變數中,這個命令就是 aux_source_directory(dir var)。
修改cmakelists.txt如下即可
cmake_minimum_required (version 2.8)
project (demo)
aux_source_directory(. src_list)
add_executable(main $)
單例與實用類
單例的介紹,多執行緒中的用法,以及2種構造方法 區別 單例 只有乙個物件的類,實用類 靜態類,沒有例項,目的是為了直接使用靜態的成員變數和靜態方法。單例的弊端 單例的釋放最好放到 protected void finalize 應用完全退出的才釋放。可能變化的引用成員變數,不能放到建構函式裡賦值 造...
socat 移植與簡單實用
socat的版本為socat 1.7.3.3 1 configure host x86 64 cc arm linux gcc prefix pwd arm 2 make 3 make install 例項 第 一 一端是unix伺服器,一端是tcp客戶端 unix server tcp clien...
CMake與Make最簡單直接的區別
寫程式大體步驟為 1.用編輯器編寫源 如.c檔案。2.用編譯器編譯 生成目標檔案,如.o。3.用鏈結器連線目標 生成可執行檔案,如.exe。但如果原始檔太多,乙個乙個編譯時就會特別麻煩,於是人們想到,為什麼不設計一種類似批處理的程式,來批處理編譯原始檔呢,於是就有了make工具,它是乙個自動化編譯工...