Clion(CMake工具)中引入第三方库的详细方法

 更新时间:2021年02月24日 10:38:49   作者:碳的还原性  
这篇文章主要介绍了Clion(CMake工具)中引入第三方库的详细方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

前言

因为自己最近在学Redis,想要在C++中获取到Redis内存数据库中的数据,需要使用Redis客户端来连接Redis传输命令并接收数据,在Redis官方网站上推荐的客户端中选择了acl-redis。而Clion是一款非常优秀的C++集成开发环境,Clion选择了CMake作为构建工具,所以需要在CMake配置文件中进行配置。

如何配置

CMake的所有配置都写在一个叫CMakeLists.txt的文件当中,所有的配置都写在该文件当中。

这是我的工程目录结构,Include文件夹为acl-redis的所有头文件,lib文件夹为acl-redis的静态库,在下面的介绍过程中会以此为例子来讲解如何引入lib文件夹下的静态库。

声明路径变量

#声明头文件路径
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为我要编译的文件。

引入第三方库

#将第三方库链接在一起
target_link_libraries(TestRedis lib_acl_cpp.a lib_acl.a lib_protocol.a pthread)

此时将需要链接的第三方库链接在一起即可。

完整的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语句的前面。

到此这篇关于Clion(CMake工具)中引入第三方库的详细方法的文章就介绍到这了,更多相关Clion引入第三方库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Qt模仿IOS滑动按钮效果

    Qt模仿IOS滑动按钮效果

    这篇文章主要为大家详细介绍了Qt模仿IOS滑动按钮效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • C++模拟2D牛顿力学效果的示例代码

    C++模拟2D牛顿力学效果的示例代码

    这篇文章主要为大家详细介绍了如何利用C++模拟2D牛顿力学效果,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下
    2023-06-06
  • C 字符串数组排序的小例子

    C 字符串数组排序的小例子

    C 字符串数组排序的小例子,需要的朋友可以参考一下
    2013-03-03
  • 使用VC6.0对C语言程序进行调试的基本手段分享

    使用VC6.0对C语言程序进行调试的基本手段分享

    这篇文章主要介绍了用VC6.0开发c语言程序的时候调试代码的一些小技巧,需要的朋友可以参考下
    2013-07-07
  • Matlab处理图像后实现简单的人脸检测

    Matlab处理图像后实现简单的人脸检测

    本文主要介绍一下如何使用matlab进行图像处理后实现人脸检测,感兴趣的可以了解一下
    2021-11-11
  • C语言中读取时间日期的基本方法

    C语言中读取时间日期的基本方法

    这篇文章主要介绍了C语言中读取时间日期的基本方法,分别是time()函数和gmtime()函数的使用,注意返回值的区别,需要的朋友可以参考下
    2015-08-08
  • C++静态链接与动态链接详解

    C++静态链接与动态链接详解

    下面小编就为大家介绍C++静态链接与动态链接。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-10-10
  • C语言关于自定义数据类型之枚举和联合体详解

    C语言关于自定义数据类型之枚举和联合体详解

    枚举顾名思义就是把所有的可能性列举出来,像一个星期分为七天我们就可以使用枚举,联合体是由关键字union和标签定义的,和枚举是一样的定义方式,不一样的是,一个联合体只有一块内存空间,什么意思呢,就相当于只开辟最大的变量的内存,其他的变量都在那个变量占据空间
    2021-11-11
  • OpenCV提取图像中圆线上的数据具体流程

    OpenCV提取图像中圆线上的数据具体流程

    在对图像进行处理时,经常会要提取出图像中某条直线、圆线或者ROI区域内的感兴趣数据,进行重点关注。本文主要介绍了利用OpenCV获取图像中圆线上的数据,需要的可以参考一下
    2021-11-11
  • C++实现求动态矩阵各元素的和

    C++实现求动态矩阵各元素的和

    这篇文章主要为大家详细介绍了C++实现求动态矩阵各元素的和,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10

最新评论