初步學習cmake的使用
**:這幾天研究了一下cmake,因為感覺在之後的開發中,我們終有一天需要這個工具。
cmake
cmake 不再使你在構建專案時鬱悶地想自殺了. --一位kde開發者。
1,背景知識:
cmake 是 kitware 公司以及一些開源開發者在開發幾個工具套件(vtk)的過程中衍生品,最終形成體系,成為乙個獨立的開放源**專案。專案的誕生時間是 2001 年。其官方**是 www.cmake.org,可以通過訪問官方**獲得更多關於 cmake 的資訊。cmake的流行其實要歸功於 kde4 的開發(似乎跟當年的 svn 一樣,kde 將**倉庫從 cvs 遷移到svn,同時證明了 svn 管理大型專案的可用性),在 kde 開發者使用了近 10 年 autotools之後,他們終於決定為 kde4 選擇乙個新的工程構建工具,其根本原因用 kde 開發者的話來說就是:只有少數幾個「編譯專家」能夠掌握 kde 現在的構建體系(admin/makefile.common),在經歷了 unsermake, scons 以及cmake 的選型和嘗試之後,kde4 決定使用 cmake 作為自己的構建系統。在遷移過程中,進展異常的順利,並獲得了 cmake 開發者的支援。所以,目前的 kde4 開發版本已經完全使用 cmake 來進行構建。像kdesvn,rosegarden 等專案也開始使用 cmake,這也注定了 cmake 必然會成為乙個主流的構建體系。
2,特點
cmake的特點主要有:
1, 開放源**(bsd許可證)。2, 跨平台。3, 能夠管理大型專案。4, 簡化編譯構件過程和編譯過程。5, 高效率。6, 可擴充套件。
3,安裝cmake
在ubuntu下直接 sudo apt-get install cmake,我裝的cmake的版本是2.4-patch 6, ubuntu版本7.04
4, 簡單使用
建立乙個臨時目錄 mkdir -p cmake/t1 && cd cmake/t1, 在這個資料夾下寫乙個最簡單的程式main.c。
main.c 檔案內容:
#include
<
stdio
.h>
int main()
在它的同級目錄下寫乙個檔案,檔名是cmakelists.txt(注意檔名大小寫),cmakelists.txt的內容是:
project (hello)
set(src_list main.c)
message(status "this is binary dir " $)
message(status "this is source dir "$)
add_executable(hello $)
cmakelists.txt,指令碼內容如下
#標識我們專案的名稱
project(my_project)
#新增glib的include路徑
include_directories(/usr/include/glib)
#將common目錄的所有檔名寫到名為common_var的變數中去
aux_source_directory(common common_var)
# 將main.c main.h新增到project_file變數中
set(project_file main.c main.h)
# 將common_var變數和project_file變數的內容放到all_file變數中去
set(all_file $ $)
#根據all_file來生成可執行檔案bt_server
add_executable (bt_server $)
#鏈結動態鏈結庫libglib2.0.so和libpthread.so
target_link_libraries(bt_server libglib-2.0.so libpthread.so)
恩,編譯指令碼就這樣寫完了,簡單吧。
下面的步驟更簡單
在你的project下面建立乙個目錄,目錄名叫build #隨便你寫什麼名字都好,不過推薦用build,顯得正規一些:)
進入終端,然後敲擊命令 cmake.. #千萬要記得後面的兩個點。這表示cmakelists.txt檔案存放在上級目錄下
如果cmake成功,你會看到build目錄下生成乙個makefile檔案。此時在終端下敲擊make.你的工程就會被編譯成可執行檔案.
4.1, 開始構件
在這個工程下執行cmake .
(. 代表本目錄)
然後就會生成這個檔案的makefile.
之後執行 make
,就可以生成hello程式了。
學習CMake使用
mkdir buidl cd build cmake make 編寫cmakelists.txt cmake minimum required version 2.8 project demo 可執行檔案的名稱 add executable main main.c 在前面cmakelists.txt...
CMake學習 四 使用變數
cmake同樣可以使用變數,比如當依賴檔案過多或需要生成的專案繁雜,就可以使用變數統一管理,也便於以後的條件編譯。一 定義變數 cmake 定義變數分顯式和隱式兩種。顯式定義即使用 set 等語句,可以自定義變數名稱。隱式定義是在使用其他語句時自動建立的變數,如 project 是定義專案名稱的,但...
CMAKE的學習筆記 初始CMAKE
cmake是乙個很強大的編譯工具 最近在看brpc,發現其中的編譯部分都是cmake來完成的,在囫圇吞棗編譯出第乙個demo後,我覺得自己該學習一下cmake了。1 及其簡單的例子 任何東西都是從hello world開始的,cmake也不例外,這裡就是乙個非常簡單的cmake 請注意,檔名必須是c...