1. 程式人生 > >cmake學習筆記1--單檔案編譯(霜之小刀)

cmake學習筆記1--單檔案編譯(霜之小刀)

cmake學習筆記1–單檔案編譯(霜之小刀)

歡迎轉載和引用,若有問題請聯絡
若有疑問,請聯絡
Email : [email protected]
QQ:2279557541


本文參考了http://blog.csdn.net/piaoxuelibin/article/details/17535737的文章,在此表示感謝


前言

cmake確實是不得不學了,以前只是為了編譯別人的專案,只要知道,cmake -xxxx就把庫編出來用就行了,但是現在的專案需要自己寫cmake,那麼就必須要開始學習了,那麼今天就是第一天的學習。

檔案以及目錄

+test
 |-main.c
 |-CMakeLists.text
 |+build

其中

test             //專案放置的目錄
main.c           //原始檔
CMakeLists.txt   //cmake的專案必須依賴的檔案,用於描述cmake如何執行
build            //用於編譯的位置,所有的中間檔案都會在該目錄下產生,不會“汙染原始碼”

main.c的內容就是最經典的hello word

#include <stdio.h>
int main()
{
    printf("hello");
    return 0
; }

這些原始碼沒啥好解釋的

CMake的關鍵檔案CMakeLists.txt

set(SRC_LIST main.c)  
add_executable(hello ${SRC_LIST})

其中
set(SRC_LIST main.c)就是說main.c就是要編譯的原始檔
add_executable(hello ${SRC_LIST})就是說生成一個exe為hello的原始檔。
簡單的看下
set就像是一個函式,有兩個引數,用空格劃分,然後把第二個引數作為值賦值給第一個引數,也就是把main.c作為SRC_LIST的內容。
add_executable也是一個函式,意思是說要新增一個可執行檔案,然後可執行檔案的原始碼為SRC_LIST的內容。

如何使用CMake進行編譯

1.進入build目錄
2.執行cmake ..
3.make

這裡解釋下

為什麼要有個build目錄?

其實build目錄不是必須的,但是為了讓程式碼檔案區域比較“乾淨”,我們希望編譯時候的中間檔案不要在原始碼區域內,所以建了一個專門存放編譯檔案的目錄,編譯時都在該目錄下進行

cmake ..是什麼意思?

cmake ..中的..其實就是制定CMakeLists.txt所在的路徑。因為當前路徑為build目錄下,所以CMakeLists.txt得路徑就在上一層目錄

不是用cmake編譯麼,為什麼又要make?

其實。。。cmake就是用來生成makefile的
因為。。。makefile真心難寫。。。至少我學起來,簡單的很容易,複雜點的話,我會崩潰的~

總結

這就是我第一次瞭解cmake,寫了個簡單到不能再簡單的demo。