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