前言
由於本身最近在學Redis,想要在C++中獲取到Redis內存數據庫中的數據,須要使用Redis客戶端來鏈接Redis傳輸命令並接收數據,在Redis官方網站上推薦的客戶端中選擇了acl-redis。而Clion是一款很是優秀的C++集成開發環境,Clion選擇了CMake做爲構建工具,因此須要在CMake配置文件中進行配置。redis
如何配置
CMake的全部配置都寫在一個叫CMakeLists.txt的文件當中,全部的配置都寫在該文件當中。shell
<img src="https://images.cnblogs.com/cnblogs_com/zrcsy/1648434/t_200216061821Clion1.png?a=1581834028619" alt="工程目錄"/>數據庫
這是個人工程目錄結構,Include文件夾爲acl-redis的全部頭文件,lib文件夾爲acl-redis的靜態庫,在下面的介紹過程當中會以此爲例子來說解如何引入lib文件夾下的靜態庫。app
聲明路徑變量
#聲明頭文件路徑 set(INC_DIR ./include) #聲明連接庫路徑 set(LINK_DIR ./lib)
這裏採用的是相對路徑的方式來引用頭文件和庫文件,這樣工程位置發生改變的時候,能夠不用修改配置文件,其中./表示當前路徑。工具
引入頭文件和庫文件
#引入頭文件 include_directories(${INC_DIR}) #引入庫文件 link_directories(${LINK_DIR})
在CMake中,${}的語法含義是獲取變量的值,這和shell中獲取變量值的方式很類似。在項目中引入了頭文件和庫文件,這樣在編譯的時候才知道到哪裏去尋找相應的頭文件和庫文件。網站
設置編譯文件
#添加編譯文件 add_executable(TestRedis cluster.cpp)
TestRedis爲我在CMake中設置的項目名稱(後面會將完整的CMake文件展現出來),cluster.cpp爲我要編譯的文件。ui
引入第三方庫
#將第三方庫連接在一塊兒 target_link_libraries(TestRedis lib_acl_cpp.a lib_acl.a lib_protocol.a pthread)
此時將須要連接的第三方庫連接在一塊兒便可。spa
完整的CMake配置文件
#設置cmake版本 cmake_minimum_required(VERSION 3.15) #項目名字 project(TestRedis) #設置編譯版本 set(CMAKE_CXX_STANDARD 14) #設置頭文件路徑 set(INC_DIR ./include) #設置連接庫路徑 set(LINK_DIR ./lib) #引入頭文件 include_directories(${INC_DIR}) #引入庫文件 link_directories(${LINK_DIR}) #編譯文件 add_executable(TestRedis cluster.cpp) #將第三方庫鏈接在一塊兒 target_link_libraries(TestRedis lib_acl_cpp.a lib_acl.a lib_protocol.a pthread)
注意事項
- C++中第三方庫的文件命名是有對應命名規則的,靜態庫的名稱通常是libxxx.a,動態庫的通常名稱是libxxx.so,在我引入第三方庫的時候,若是將庫名稱lib_acl_cpp.a重命名爲acl_app.a再引用的話,將出現找不到庫文件的錯誤,這一點沒有找到緣由。
- CMake配置文件中的一些語句能夠適當調整順序,但add_executable語句必需要在target_link_libraries語句的前面。