版權(quán)申明:
本文原創(chuàng)首發(fā)于以下網(wǎng)站萌踱,您可以自由轉(zhuǎn)載麻裳,但必須加入完整的版權(quán)聲明
博客園:https://www.cnblogs.com/MogooStudio/
csdn博客:https://blog.csdn.net/nmjkl001/
知乎:https://www.zhihu.com/people/MogooStudio/
簡(jiǎn)書(shū):http://www.reibang.com/u/9547c81ca54e
segmentfault:https://segmentfault.com/u/mogoostudio
CMakeLists.txt 文件解析
- cmake verson,指定cmake版本
cmake_minimum_required(VERSION 3.2)
- project name未荒,指定項(xiàng)目的名稱,一般和項(xiàng)目的文件夾名稱對(duì)應(yīng)
PROJECT(test_sqrt)
- head file path,頭文件目錄
INCLUDE_DIRECTORIES(
include
)
- source directory等曼,源文件目錄
AUX_SOURCE_DIRECTORY(src DIR_SRCS)
- set environment variable,設(shè)置環(huán)境變量凿蒜,編譯用到的源文件全部都要放到這里禁谦,否則編譯能夠通過(guò),但是執(zhí)行的時(shí)候會(huì)出現(xiàn)各種問(wèn)題废封,比如"symbol lookup error xxxxx , undefined symbol"
SET(TEST_MATH
${DIR_SRCS}
)
- add executable file州泊,添加要編譯的可執(zhí)行文件
ADD_EXECUTABLE(${PROJECT_NAME} ${TEST_MATH})
- add link library,添加可執(zhí)行文件所需要的庫(kù)漂洋,比如我們用到了libm.so(命名規(guī)則:lib+name+.so)遥皂,就添加該庫(kù)的名稱
TARGET_LINK_LIBRARIES(${PROJECT_NAME} m)
編譯階段
- make 命令默認(rèn)執(zhí)行的是 make all,make all 有四個(gè)階段: prepare test compile package
make prepare : 只會(huì)執(zhí)行prepare階段刽漂,這個(gè)階段主要是下載編譯依賴
make test : 只會(huì)執(zhí)行test階段演训,這個(gè)階段主要是做單元測(cè)試
make compile : 只會(huì)執(zhí)行compile階段,這個(gè)階段主要是進(jìn)行編譯
make package : 只會(huì)執(zhí)行packege階段贝咙,這個(gè)階段會(huì)把編譯產(chǎn)出都copy到output目錄中
make install : 只會(huì)執(zhí)行install階段样悟,這個(gè)階段是把編譯產(chǎn)出放到$GOPATH/bin目錄下,這個(gè)不是必須的
make clean : 只會(huì)執(zhí)行clean階段庭猩,這個(gè)階段把編譯輸出的一些文件刪除乌奇,恢復(fù)到編譯之前的狀態(tài)
基本實(shí)踐
- 創(chuàng)建項(xiàng)目文件夾hello
- 文件夾hello內(nèi),創(chuàng)建構(gòu)建目錄build
- 文件夾hello內(nèi)眯娱,創(chuàng)建源代碼(main.cpp)
- 文件夾hello內(nèi)礁苗,創(chuàng)建CMakeLists.txt
project(hello) add_executable(hello main.cpp)
- 通過(guò)cmake命令構(gòu)建項(xiàng)目:終端內(nèi)執(zhí)行命令:cmake PATH,這里執(zhí)行
cd build cmake ..
- 通過(guò)cmake的gui構(gòu)建項(xiàng)目
打開(kāi)cmake gui設(shè)置source和build 點(diǎn)擊Configure設(shè)置platform徙缴,再點(diǎn)擊Configure 點(diǎn)擊Genrate 點(diǎn)擊OpenProject
構(gòu)建可執(zhí)行程序(待完善)
構(gòu)建庫(kù)程序(待完善)
我的聯(lián)系方式:
QQ:2161044579
郵箱:mogoostudio@outlook.com
Github:https://github.com/MogooStudio