前言
最近突然想將開發(fā)環(huán)境轉(zhuǎn)移到Linux上,同時也準備閱讀些github上的開源代碼,發(fā)現(xiàn)現(xiàn)在開源項目一般都是用cmake管理的。所以就在自己的虛擬機上搗鼓。一開始我也不知道cmake是啥,后來通過折騰也大概知道其作用,它所做的事其實就是告訴編譯器如何去編譯鏈接源代碼。你也許想問不是有makefile嗎,為什么還要它?這里就牽涉到跨平臺問題。在windows平臺下是通過project文件去管理這些的,如果不用cmake,那我們?yōu)閣indow和linux系統(tǒng)就要寫對應(yīng)的project文件和makefile文件,這無疑是一件繁瑣的事,而我們只要編寫一次cmake,就可以用在各個平臺,而且其語法也簡單。這就是所謂的“write once,use everywhere”。
安裝過程
1.首先去官網(wǎng)(https://cmake.org/download/)下載安裝包,選擇“XX.tar.gz”源碼安裝包
![](/d/20211018/d558029b2d77272a9571a3ba95b90870.gif)
2.輸入如下命令
$tar -zxvf xx.tar.gz
$./bootstrap
$make
$make install
輸入以上命令后就已經(jīng)可以在ubuntu上安裝好cmake。
編寫簡單的cmake
使用cmake首先得有個CMakeList.txt文件,你需要把配置信息寫在該文件中,然后通過cmake去處理該文件。
將設(shè)有下面一個main.cpp文件
//main.cpp文件
#includeiostream>
using namespace std;
int main(){
cout"hello world!"endl;
return 0;
}
這時候我們就可以寫個如下的CMakeList.txt文件
#cmake最小需要版本
cmake_minimum_required(VERSION 2.8)
#項目名字
project(HELLOWORLD)
#包含原程序,即把給定目錄下的源程序復(fù)制給變量DIR_SRC
aux_source_directory(DIR_SRC ./)
#生成程序
add_executable(helloworld ${DIR_SRC})
然后執(zhí)行如下命令
$mkdir build
$cd build
$cmake ..
$make
$./helloworld
這樣就編譯好程序并運行。
添加靜態(tài)庫或者動態(tài)庫
而假設(shè)我們程序用到了在/usr/lib下的一個靜態(tài)庫libmy.a,那就需要添加如下兩個命令
#庫所在位置
link_directories(/usr/lib)
#程序編譯時候鏈接庫
target_link_libraries(helloworld my)