Cmake學(xué)習(xí)(附源碼)

最近及后面很長一段時(shí)間會(huì)使用c++開發(fā)項(xiàng)目(小白),所以學(xué)習(xí)了cmake:c/c++跨平臺構(gòu)建工具,和java的maven屬于同一類工具。將本人學(xué)習(xí)內(nèi)容再此記錄一下,希望給大家一些幫助神僵。

Prerequisites:要在linux開發(fā)c++,在學(xué)cmake之前覆劈,需先學(xué)gcc保礼、Makefile,按順序來好一點(diǎn)责语。(項(xiàng)目規(guī)模小可以使用Makefile就很不錯(cuò)炮障。要想實(shí)現(xiàn)跨平臺開發(fā)使用cmake很不錯(cuò))

Github:cmakestudy

  • Demo1-Demo7 CMake入門中介紹
    • Demo1:單個(gè)源文件項(xiàng)目
    • Demo2: 同一個(gè)目錄,多個(gè)源文件
    • Demo3:多個(gè)目錄坤候,多個(gè)源文件
    • Demo4:自定義編譯選項(xiàng)
    • Demo5:安裝和測試
    • Demo6:添加環(huán)境檢測
    • Demo7:添加版本號
    • Demo8:生成安裝包
  • t2-t6 CMake Practice中介紹
    • t2:多目錄編譯铝阐、安裝
    • t3:安裝動(dòng)態(tài)庫和靜態(tài)庫
    • t4:如何使用外部共享庫和頭文件
    • t5:使用FIND_PACKAGE查找第三方模塊
    • t6:自己實(shí)現(xiàn)模塊,并通過FIND_PACKAGE調(diào)用

什么是 CMake

  • 你或許聽過好幾種 Make 工具铐拐,例如 GNU Make 徘键,QT 的 qmake 练对,微軟的 MS nmake,BSD Make(pmake)吹害,Makepp螟凭,等等。這些 Make 工具遵循著不同的規(guī)范和標(biāo)準(zhǔn)它呀,所執(zhí)行的 Makefile 格式也千差萬別螺男。這樣就帶來了一個(gè)嚴(yán)峻的問題:如果軟件想跨平臺,必須要保證能夠在不同平臺編譯纵穿。而如果使用上面的 Make 工具下隧,就得為每一種標(biāo)準(zhǔn)寫一次 Makefile ,這將是一件讓人抓狂的工作谓媒。

  • CMake就是針對上面問題所設(shè)計(jì)的工具:它首先允許開發(fā)者編寫一種平臺無關(guān)的 CMakeList.txt 文件來定制整個(gè)編譯流程淆院,然后再根據(jù)目標(biāo)用戶的平臺進(jìn)一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程句惯。從而做到“Write once, run everywhere”土辩。顯然,CMake 是一個(gè)比上述幾種 make 更高級的編譯配置工具抢野。一些使用 CMake 作為項(xiàng)目架構(gòu)系統(tǒng)的知名開源項(xiàng)目有 VTK拷淘、ITKKDE指孤、OpenCV启涯、OSG[1]

在 linux 平臺下使用 CMake 生成 Makefile 并編譯的流程如下:

  1. 編寫 CMake 配置文件 CMakeLists.txt 恃轩。
  2. 執(zhí)行命令 cmake PATH 或者 ccmake PATH 生成 Makefile 1 1ccmakecmake 的區(qū)別在于前者提供了一個(gè)交互式的界面结洼。。其中详恼, PATH 是 CMakeLists.txt 所在的目錄。
  3. 使用 make 命令進(jìn)行編譯引几。

推薦閱讀

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市伟桅,隨后出現(xiàn)的幾起案子敞掘,更是在濱河造成了極大的恐慌,老刑警劉巖楣铁,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玖雁,死亡現(xiàn)場離奇詭異,居然都是意外死亡盖腕,警方通過查閱死者的電腦和手機(jī)赫冬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門浓镜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人劲厌,你說我怎么就攤上這事膛薛。” “怎么了补鼻?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵哄啄,是天一觀的道長。 經(jīng)常有香客問我风范,道長咨跌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任硼婿,我火速辦了婚禮锌半,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘加酵。我一直安慰自己拳喻,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布猪腕。 她就那樣靜靜地躺著冗澈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪陋葡。 梳的紋絲不亂的頭發(fā)上亚亲,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機(jī)與錄音腐缤,去河邊找鬼捌归。 笑死,一個(gè)胖子當(dāng)著我的面吹牛岭粤,可吹牛的內(nèi)容都是我干的惜索。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼剃浇,長吁一口氣:“原來是場噩夢啊……” “哼巾兆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起虎囚,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤角塑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后淘讥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體圃伶,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了窒朋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搀罢。...
    茶點(diǎn)故事閱讀 39,773評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖炼邀,靈堂內(nèi)的尸體忽然破棺而出魄揉,到底是詐尸還是另有隱情,我是刑警寧澤拭宁,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布洛退,位于F島的核電站,受9級特大地震影響杰标,放射性物質(zhì)發(fā)生泄漏兵怯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一腔剂、第九天 我趴在偏房一處隱蔽的房頂上張望媒区。 院中可真熱鬧,春花似錦掸犬、人聲如沸袜漩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宙攻。三九已至,卻和暖如春介褥,著一層夾襖步出監(jiān)牢的瞬間座掘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工柔滔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留溢陪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓睛廊,卻偏偏與公主長得像形真,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子超全,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容