CMake入門(一)

Written with StackEdit.

CMake是什么

CMake是一個opensource的軟件項目構建管理工具;它允許開發者用一種簡單的文本格式進行構建參數的指定。

為什么使用CMake

如果你之前有過維護軟件包的構建和安裝的經驗,你就會對CMake有興趣。
當前很多項目都可以在Linux下用Makefile和在Windows下用Visual Studio進行編譯;這要求開發者在對應的系統下保持構建工具的更新,并且不同系統的構建行為保持一致;如果再引入XCode,這需要更多的構建工具,這樣會是一個問題。
如果在此基礎上引入可選組件,比如如果系統上有libjpeg,項目就支援JPEG,這會造成更大的麻煩。
CMake提供了一個簡單的,易于理解的文件格式來解決上述問題。

如果一個項目有多個開發者參與,或者這個項目有多個目標平臺;那么不可避免的需要在多臺PC上進行構建,不同的PC在開發環境上會有差異。

  • 自動進行項目構建所需的program、library、header file的查找能力;
  • 在source tree以外進行構建的能力;
  • 為Qt moc,SWIG等自動產生復雜的自定義命令的能力;
  • 在configuration階段進行可選組件定制的能力;
  • 自動從簡單文件文件產生workspace和project的能力;
  • 配置生成靜態庫/動態庫的能力;
  • 自動產生文件依賴,支持并行編譯;

CMake的基本語法

build的過程由每個目錄下的名為CMakeFileLists.txt的文件組成的一系列文件列表所控制;
CMakeFileLists.txt文件由CMake語句進行項目描述,CMake語句的語法為:

command( args... )
  • command是命令的名字,CMake是不區分大小寫的;
  • args是一系列由空格分隔的參數,如果參數中有空格,參數需要用雙引號引起來;

變量被引用的格式是${VAR};
多個參數可以使用set來使之構成一個list

set( Foo a b c )

這樣設置的結果是Foo的值是 a b c;

CMake可以直接訪問系統環境變量和Windows注冊表;
訪問系統環境變量的語法:

$Env{ARG}

訪問Windows注冊表:

[HKEY_CURRENT_USER\\Software\\path1\\path2;key]

Hello World

一個簡單的CMakeFileLists.txt的例子

project( Hello )
add_executalbe( Hello Hello.c )

一個稍微復雜的例子

cmake_minimum_required( 2.6 )
project( HELLO )

set( HELLO_SRCS Hello.c File2.c File3.c )
if( WIN32 )
    set( HELLO_SRCS ${HELLO_SRCS} WinSupport.c )
esle()
    set( HELLO_SRCS ${HELLO_SRCS} LinuxSupport.c )
endif()

add_executable( HELLO ${HELLO_SRCS} )

# look for the Tcl library
find_library( TCL_LIBRARY 
    NAMES tcl tcl84 tcl83 tcl82 tcl80
    PATHS /usr/lib /usr/local/lib
    )
if( TCL_LIBRARY )
    target_link_library( Hello ${TCL_LIBRARY} )
endif()

如何運行CMake

通常使用兩種方式運行CMake

cmake-gui
通過桌面或者命令行運行cmake-gui,打開后UI如下:

cmake-gui

按照如下步驟進行設置:

  1. 圖示1, 選擇source code所在位置(如果通過cmake-gui path_to_src的方式,source code位置已經設定好);
  2. 圖示2, 選擇build要產生文件的存放位置;
  3. 圖示3,configure;如果是第一次執行configure,會彈出對話框讓進行compiler的選擇,指定toolchain file;這樣設置以后,configure過程會進行,在圖示4的區域顯示相關option;
  4. 圖示4,進行相關參數或者option的設置;
  5. 圖示5,generate,產生指定平臺的build file(Linux的Makefile或者Visual Studio的sln file);

命令行使用cmake

  1. 切換到準備放置binary file的目錄
  2. cmake path_to_src -Doption
  3. make
  4. make install
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • CMake學習 本篇分享一下有關CMake的一些學習心得以及相關使用。 本文目錄如下: [1、CMake介紹] [...
    AlphaGL閱讀 12,284評論 11 79
  • 注:首發地址 1. 前言 當在做 Android NDK 開發時,如果不熟悉用 CMake 來構建,讀不懂 CMa...
    cfanr閱讀 24,514評論 1 53
  • 【MySQL】Linux下MySQL 5.5、5.6和5.7的RPM、二進制和源碼安裝 1.1BLOG文檔結構圖 ...
    小麥苗DB寶閱讀 10,586評論 0 31
  • 喝酒,你喜歡什么樣的感覺,說句實話,我喜歡爛醉的感覺。 我覺得喝酒要盡興而且要和合適的人一起喝,這樣的酒才算是喝對...
    莊德坤閱讀 355評論 0 0
  • 我,一個平凡單純的姑娘,一個理想主義者。幻想著美好的愛情,幻想著城堡,王子。我渴望得到一份天長地久的愛情,我只想一...
    42ece776fb92閱讀 206評論 0 1