Clion(CMake工具)中如何引入第三方库

前言

由于本身最近在学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语句的前面。
相关文章
相关标签/搜索