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。