cmake入門

1 什麼是CMake?

Cmake是一個編譯、構建工具。使用CMakeLists.txt來描述構建過程,能夠生成標準的構建文件,如Makefile。通常先編寫CMakeLists.txt,而後經過cmake來生成Makefile,最後執行make進行編譯。html

1.1 cmake安裝

​ 在ubuntu上安裝cmake很是簡單,執行sudo apt-get install cmake便可。若是想安裝最新的cmake版本,就須要本身進行源碼編譯安裝。源碼下載路徑:https://cmake.org/download。源碼編譯安裝很是簡單,這裏就再也不詳細描述了ubuntu

1.2 查看cmake版本

cmake安裝完成後,執行cmake --version,便可查看cmake的版本號。個人是3.5.1ide

2 CMake的基本使用流程

  • 編寫CMakeLists.txt
  • 執行cmake .;通常在工程根目錄下mkdir build;cd build;而後執行cmake ..;這樣的目的是爲了保證源碼不會污染
  • 執行make進行編譯

3 CMake簡單示例

這裏給出一個簡單的使用cmake進行構建的工程示例,目錄結構以下:工具

test01
​ ├── build
​ ├── CMakeLists.txt
​ └── main.cui

main.c文件以下:url

#include <stdio.h>

int main(int argc, char** argv)
{
    printf("hello cmake\n");

    return 0;
}

CMakeLists.txt內容以下:code

#設置cmake的最小版本
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
#設置項目名稱
project(test01)
#設置源文件
aux_source_directory(. dir_srcs)
#設置可執行程序
add_executable(test01 ${dir_srcs})

我這裏mkdir 了build 目錄,htm

cd buildip

cmake ..ci

make

最後就會在當前目錄下看到生成的test01可執行程序。

接下來,對上例中的CMakeLists.txt的語法進行解釋。

  • CMakeLists.txt 的語法比較簡單,由命令、註釋和空格組成,其中命令是不區分大小寫的,符號"#"後面的內容被認爲是註釋

    Call the cmake_minimum_required() command at the beginning of the top-level CMakeLists.txt file even before calling the project() command. It is important to establish version and policy settings before invoking other commands whose behavior they may affect. See also policy CMP0000.

  • cmake_minimun_required

    格式:cmake_minimum_required(VERSION <min>[...<max>][FATAL_ERROR])

    設置該工程的cmake最低支持版本,注意"VERSION"不能寫成小寫,不然會報cmake_minimum_required called with unknown argument "version".

  • project

    project(<PROJECT-NAME> [LANGUAGES] [<language-name>...])
    project(<PROJECT-NAME>
            [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
            [DESCRIPTION <project-description-string>]
            [HOMEPAGE_URL <url-string>]
            [LANGUAGES <language-name>...])
  • aux_source_directory

    aux_source_directory(<dir> <variable>)

    Find all source files in a directory.Collects the names of all the source files in the specified directory and stores the list in the provided.

  • add_executable

    add_executable(<name> [WIN32] [MACOSX_BUNDLE]
                   [EXCLUDE_FROM_ALL]
                   [source1] [source2 ...])

    將源文件編譯成可執行程序,可執行程序的名稱由 指定

補充:

cmake的命令包含 scripting commands,project commands,ctest commands,deprecated commands。

相關文章
相關標籤/搜索