Clion(CMake工具)中引入第三方庫(kù)的詳細(xì)方法
前言
因?yàn)樽约鹤罱趯W(xué)Redis,想要在C++中獲取到Redis內(nèi)存數(shù)據(jù)庫(kù)中的數(shù)據(jù),需要使用Redis客戶端來(lái)連接Redis傳輸命令并接收數(shù)據(jù),在Redis官方網(wǎng)站上推薦的客戶端中選擇了acl-redis。而Clion是一款非常優(yōu)秀的C++集成開發(fā)環(huán)境,Clion選擇了CMake作為構(gòu)建工具,所以需要在CMake配置文件中進(jìn)行配置。
如何配置
CMake的所有配置都寫在一個(gè)叫CMakeLists.txt的文件當(dāng)中,所有的配置都寫在該文件當(dāng)中。

這是我的工程目錄結(jié)構(gòu),Include文件夾為acl-redis的所有頭文件,lib文件夾為acl-redis的靜態(tài)庫(kù),在下面的介紹過(guò)程中會(huì)以此為例子來(lái)講解如何引入lib文件夾下的靜態(tài)庫(kù)。
聲明路徑變量
#聲明頭文件路徑 set(INC_DIR ./include) #聲明鏈接庫(kù)路徑 set(LINK_DIR ./lib)
這里采用的是相對(duì)路徑的方式來(lái)引用頭文件和庫(kù)文件,這樣工程位置發(fā)生改變的時(shí)候,可以不用修改配置文件,其中./表示當(dāng)前路徑。
引入頭文件和庫(kù)文件
#引入頭文件
include_directories(${INC_DIR})
#引入庫(kù)文件
link_directories(${LINK_DIR})
在CMake中,${}的語(yǔ)法含義是獲取變量的值,這和shell中獲取變量值的方式很相似。在項(xiàng)目中引入了頭文件和庫(kù)文件,這樣在編譯的時(shí)候才知道到哪里去尋找相應(yīng)的頭文件和庫(kù)文件。
設(shè)置編譯文件
#添加編譯文件 add_executable(TestRedis cluster.cpp)
TestRedis為我在CMake中設(shè)置的項(xiàng)目名稱(后面會(huì)將完整的CMake文件展示出來(lái)),cluster.cpp為我要編譯的文件。
引入第三方庫(kù)
#將第三方庫(kù)鏈接在一起 target_link_libraries(TestRedis lib_acl_cpp.a lib_acl.a lib_protocol.a pthread)
此時(shí)將需要鏈接的第三方庫(kù)鏈接在一起即可。
完整的CMake配置文件
#設(shè)置cmake版本
cmake_minimum_required(VERSION 3.15)
#項(xiàng)目名字
project(TestRedis)
#設(shè)置編譯版本
set(CMAKE_CXX_STANDARD 14)
#設(shè)置頭文件路徑
set(INC_DIR ./include)
#設(shè)置鏈接庫(kù)路徑
set(LINK_DIR ./lib)
#引入頭文件
include_directories(${INC_DIR})
#引入庫(kù)文件
link_directories(${LINK_DIR})
#編譯文件
add_executable(TestRedis cluster.cpp)
#將第三方庫(kù)連接在一起
target_link_libraries(TestRedis lib_acl_cpp.a lib_acl.a lib_protocol.a pthread)
注意事項(xiàng)
C++中第三方庫(kù)的文件命名是有對(duì)應(yīng)命名規(guī)則的,靜態(tài)庫(kù)的名稱一般是libxxx.a,動(dòng)態(tài)庫(kù)的一般名稱是libxxx.so,在我引入第三方庫(kù)的時(shí)候,如果將庫(kù)名稱lib_acl_cpp.a重命名為acl_app.a再引用的話,將出現(xiàn)找不到庫(kù)文件的錯(cuò)誤,這一點(diǎn)沒(méi)有找到原因。
CMake配置文件中的一些語(yǔ)句可以適當(dāng)調(diào)整順序,但add_executable語(yǔ)句必須要在target_link_libraries語(yǔ)句的前面。
到此這篇關(guān)于Clion(CMake工具)中引入第三方庫(kù)的詳細(xì)方法的文章就介紹到這了,更多相關(guān)Clion引入第三方庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用VC6.0對(duì)C語(yǔ)言程序進(jìn)行調(diào)試的基本手段分享
這篇文章主要介紹了用VC6.0開發(fā)c語(yǔ)言程序的時(shí)候調(diào)試代碼的一些小技巧,需要的朋友可以參考下2013-07-07
Matlab處理圖像后實(shí)現(xiàn)簡(jiǎn)單的人臉檢測(cè)
本文主要介紹一下如何使用matlab進(jìn)行圖像處理后實(shí)現(xiàn)人臉檢測(cè),感興趣的可以了解一下2021-11-11
C++靜態(tài)鏈接與動(dòng)態(tài)鏈接詳解
下面小編就為大家介紹C++靜態(tài)鏈接與動(dòng)態(tài)鏈接。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2021-10-10
C語(yǔ)言關(guān)于自定義數(shù)據(jù)類型之枚舉和聯(lián)合體詳解
枚舉顧名思義就是把所有的可能性列舉出來(lái),像一個(gè)星期分為七天我們就可以使用枚舉,聯(lián)合體是由關(guān)鍵字union和標(biāo)簽定義的,和枚舉是一樣的定義方式,不一樣的是,一個(gè)聯(lián)合體只有一塊內(nèi)存空間,什么意思呢,就相當(dāng)于只開辟最大的變量的內(nèi)存,其他的變量都在那個(gè)變量占據(jù)空間2021-11-11
OpenCV提取圖像中圓線上的數(shù)據(jù)具體流程
在對(duì)圖像進(jìn)行處理時(shí),經(jīng)常會(huì)要提取出圖像中某條直線、圓線或者ROI區(qū)域內(nèi)的感興趣數(shù)據(jù),進(jìn)行重點(diǎn)關(guān)注。本文主要介紹了利用OpenCV獲取圖像中圓線上的數(shù)據(jù),需要的可以參考一下2021-11-11
C++實(shí)現(xiàn)求動(dòng)態(tài)矩陣各元素的和
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)求動(dòng)態(tài)矩陣各元素的和,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10

