CMake Overview

Reference

CMakeList.txt

對於每個project,需要在目錄裏有一個CMakeList.txt文件。

Command

這個文件由一系列的命令組成,每個命令的形式爲:

command(args...)

command是命令的名字,不區分大小寫;args是命令的參數,而各個參數以空格分割。——如果參數中包括空格,則用雙引號括起來。

按照這些命令在txt中出現的順序執行。

變量

變量可以是字符串,也可以是字符串列表。

語法:

${VAR}

如果變量的值是多個參數,則用set命令。比如下面的命令就是把 a b c 賦值給Foo這個變量:

set(Foo a b c)

此時,command(${Foo}) 就等價於 command(a b c)。

如果要作爲一個參數傳遞,則需要添加雙引號。如:command(“${Foo}”) 就等價於 command(“a b c”)。

環境變量

CMake可以直接引用環境變量:$ENV{VAR}

Hello World

一個c文件,生成可執行文件

project(Hello)
add_executable(Hello Hello.c)

如果要有多個c文件生成可執行文件,則如下:

add_executable(Hello Hello.c File2.c File3.c File4.c)

註釋

“#”開頭的一樣視爲註釋。

運行CMake

需要兩個目錄:

  • 源代碼目錄:源代碼,以及CMakeList.txt
  • binary目錄:放生成的目標文件、庫文件,以及可執行文件。

通常情況下,CMake不會寫任何文件到源代碼目錄中,而是生成在binary目錄中。——當然,也可以把這兩個目錄設置爲同一個目錄,即爲insource build。對應的就是out-of-source build。

in source build

直接cd到源代碼目錄,並運行:

cmake .

out-of-source build

在binary目錄下面,執行cmake命令,比如:

cmake ../src

cmake

$ cmake --help
Usage

  cmake [options] <path-to-source>
  cmake [options] <path-to-existing-build>

Specify a source directory to (re-)generate a build system for it in the
current working directory.  Specify an existing build directory to
re-generate its build system.

靜態庫&可執行文件

project(sha1test)

add_library(sha1 STATIC sha1/sha1.c)

add_executable(sha1test main.cpp)

target_link_libraries(sha1test sha1)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章