• 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语句的前面。
  • 相关阅读:
    C# 插件构架实战(Jack H Hansen )
    .Net 中的反射(动态创建类型实例) Part.4
    css3新添加属性>calc()
    详解IIS Express的详细配置、使用和注意事项
    SpringBoot 整合 Shiro 实现登录拦截
    java MD5 加密
    MyBatis xml foreach循环语句
    java 考试系统 在线学习 视频直播 人脸识别 springboot框架 前后分离 PC和手机端
    Spring Boot 事物回滚
    allowedOrigins cannot contain the special value "*" gateway 报错
  • 原文地址:https://www.cnblogs.com/zrcsy/p/12316735.html
Copyright © 2020-2023  润新知