跨平臺(tái)編譯工具cmake的簡(jiǎn)單使用
在使用不同平臺(tái)的電腦時(shí),使用的編譯也會(huì)不一樣,如果想把一個(gè)項(xiàng)目在不同平臺(tái)下編譯,那有什么方式可以實(shí)現(xiàn)這樣的需求呢,這就是這篇文章就來(lái)介紹其中的一種方式,就是使用cmake,cmake 并不直接建構(gòu)出最終的軟件,而是產(chǎn)生標(biāo)準(zhǔn)的建構(gòu)檔,然后再借助編譯工具來(lái)構(gòu)建。
| 環(huán)境搭建
在windows可以使用cmake+vscode+mingw配合使用構(gòu)建,還需要把mingw32-make.exe,復(fù)制一份,將其中一份重命名為make.exe,以實(shí)現(xiàn)在不同平臺(tái)下可以直接使用make指令。在ubuntu中可以使用cmake+vscode+gcc來(lái)構(gòu)建,ubuntu一般會(huì)自帶gcc。vscode需要安裝幾個(gè)相關(guān)插件:
(資料圖片僅供參考)
C/C++CMakeCMakeTools
可以通過(guò)cmake --version 來(lái)查看是否安裝成功,相關(guān)的安裝直接百度以下就可以;注意不同平臺(tái)下使用的命令可能會(huì)有差別,筆者使用的是ubuntu系統(tǒng)來(lái)操作。
| 簡(jiǎn)單使用
同目錄單文件
1、先看文件樹(shù)
main.c源碼文件
#include"stdio.h"intmain(){printf("ok");return0;}
CMakeLists.txt配置文件
#CMake最低版本號(hào)要求cmake_minimum_required(VERSION2.8)#項(xiàng)目信息project(Demo1)#指定生成目標(biāo)add_executable(Demomain.c)
2、構(gòu)建Makefile文件
創(chuàng)建好文件夾后,再進(jìn)入build文件夾, 使用 cmake .. 命令構(gòu)建Makefile文件:
3、通過(guò)gcc編譯
在Makefile同級(jí)目錄下使用 make 命令編譯,就會(huì)生成一個(gè)可執(zhí)行文件Demo文件:
4、執(zhí)行可執(zhí)行文件
同目錄多文件
1、編寫文件
在上邊的基礎(chǔ)上,把生成的文件刪除,再添加兩個(gè)文件:
main.c源碼文件
#include"stdio.h"#include"hello.h"intmain(){printf("ok");hello();return0;}
hello.c源碼文件
#include"hello.h"voidhello(void){printf("hello");}
hello.h源碼文件
#ifndef__HELLO__#define__HELLO__#include"stdio.h"voidhello(void);#endif
CMakeLists.txt配置文件(使用方式二):
方式一:通過(guò)手動(dòng)指定源碼文件
#CMake最低版本號(hào)要求cmake_minimum_required(VERSION2.8)#項(xiàng)目信息project(Demo1)#指定生成目標(biāo)add_executable(Demomain.chello.c)
方式二:查找當(dāng)前目錄下的所有源文件
#CMake最低版本號(hào)要求cmake_minimum_required(VERSION2.8)#項(xiàng)目信息project(Demo1)#查找當(dāng)前目錄下的所有源文件#并將名稱保存到DIR_SRCS變量aux_source_directory(.DIR_SRCS)#指定生成目標(biāo)(自動(dòng)查找)add_executable(Demo${DIR_SRCS})
2、構(gòu)建Makefile文件
3、生成可執(zhí)行文件
不同目錄多文件
不同目錄下的處理,就是把文件編譯成庫(kù),再在對(duì)應(yīng)位置鏈接進(jìn)去。
1、先看文件樹(shù)
main.c 和 hello.c 和hello.h都可同目錄多文件案例源碼一樣。
頂層的CMakeLists.txt配置:
#CMake最低版本號(hào)要求cmake_minimum_required(VERSION2.8)#項(xiàng)目信息project(Demo3)#查找當(dāng)前目錄下的所有源文件#并將名稱保存到DIR_SRCS變量aux_source_directory(.DIR_SRCS)#添加hello子目錄add_subdirectory(hello)#指定生成目標(biāo)add_executable(Demomain.c)#添加鏈接庫(kù)target_link_libraries(DemoHelloFunctions)
hello文件夾中的CMakeLists.txt配置:
#查找當(dāng)前目錄下的所有源文件#并將名稱保存到DIR_LIB_SRCS變量aux_source_directory(.DIR_LIB_SRCS)#生成鏈接庫(kù)add_library(HelloFunctions${DIR_LIB_SRCS})
2、構(gòu)建Makefile文件
3、生成可執(zhí)行文件
文件的路徑一定要是寫對(duì),不然編譯會(huì)出問(wèn)題:
正確的寫法如下:
執(zhí)行可執(zhí)行文件:
這就是cmake的簡(jiǎn)單用法,可以根據(jù)自己需求進(jìn)行深入學(xué)習(xí)。
審核編輯:湯梓紅
標(biāo)簽:
頭條精選
- 跨平臺(tái)編譯工具cmake的簡(jiǎn)單使用2023-08-14
- 雨水浸泡過(guò)的物品,如何消毒處置?2023-08-14
- 閉環(huán)監(jiān)管嚴(yán)防“跑冒滴漏” 懷化確?;蒉r(nóng)補(bǔ)2023-08-14
- 14個(gè)設(shè)區(qū)市都有精彩好戲2023-08-14
- 金達(dá)威:公司體重管理輔助產(chǎn)品可以查詢旗艦2023-08-14
- 芒果超媒:公司購(gòu)買的理財(cái)產(chǎn)品均為保本產(chǎn)品2023-08-14
- 合力泰:部分銀行賬戶被凍結(jié) 2023-08-14
- 快捷酒店價(jià)格,為何直追星級(jí)酒店?2023-08-14
- 合肥一煙酒店短時(shí)間兩次違法 1瓶假酒罰款32023-08-14
- 十二星座中:誰(shuí)是最受歡迎的星座?2023-08-14
- 港股一線丨港股疲弱,內(nèi)房股汽車股集體走低2023-08-14
- 國(guó)家藥監(jiān)局推動(dòng)適老化改革試點(diǎn) 保障用藥安2023-08-14
- 冰原海霧中,他們閃耀著光——近距離感受中2023-08-14
- 石首“安薪”讓農(nóng)民工“安心” 半年追討農(nóng)2023-08-14
- 瑞信散戶投資者計(jì)劃對(duì)瑞銀收購(gòu)案提起訴訟2023-08-14
- 理論薦讀|秦睿:“一切問(wèn)題都要到現(xiàn)場(chǎng)去實(shí)2023-08-14
- 【中國(guó)經(jīng)濟(jì)新亮點(diǎn)①】重大項(xiàng)目建設(shè)有力有序2023-08-14
- 寶可夢(mèng)游戲因定期發(fā)布策略面臨質(zhì)量問(wèn)題挑戰(zhàn)2023-08-14
- 恩施州已兌現(xiàn)6177萬(wàn)元“免申即享”補(bǔ)貼2023-08-14
- ox10042750(oxco150002)2023-08-14
- 武漢周邊兩日游適合去哪里(武漢周邊兩日游2023-08-14
- 蔣孔陽(yáng)自選集:美的規(guī)律(關(guān)于蔣孔陽(yáng)自選集2023-08-14
- 時(shí)事觀察|“緊急狀態(tài)”漸成厄瓜多爾“常態(tài)2023-08-14
- 日本芯片戰(zhàn)略逐步落實(shí),影響全球芯片格局2023-08-13
- 奧飛娛樂(lè):公司正在推進(jìn)相關(guān)合作事項(xiàng)2023-08-13
- 《博德之門3》解鎖古代典籍的寶石獲取方式2023-08-13
- 勸學(xué)韓愈拼音版(勸學(xué)韓愈)2023-08-13
- 可怕!加熱3分鐘釋放幾十億塑料顆粒!千萬(wàn)2023-08-13
- 恭喜B羅奪冠!國(guó)米醞釀交易得到16球6助攻前2023-08-13
- 廣州鼓勵(lì)在城中村規(guī)?;ㄔO(shè)保障性租賃住房2023-08-13