Cmake簡單實用(單檔案與多檔案)

2021-10-07 21:03:06 字數 1852 閱讀 7890

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工具,它是乙個自動化編譯工...