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

原文地址:https://www.cnblogs.com/zrcsy/p/12316735.html

时间: 2024-08-28 05:48:49

Clion(CMake工具)中如何引入第三方库的相关文章

Swift项目引入第三方库的方法

以下,将创建一个Swift项目,然后引入3个库: Snappy 简化autolayout代码的库 Alamofire HTTP网络库,AFNetworking作者写的 SDWebImage 图片加载,objc项目,通过头文件bridge方式供swift使用 其中,前两个是Swift的库,SDWebImage是Objc的库. 源代码见:https://github.com/MarshalW/SwiftWith3rdLibDemo 项目跑起来是这个样子: 做下面步骤之前,需要让自己的项目是git项目

Swift中的Masonry第三方库——SnapKit

在OC开发时我常用一个名叫Masonry的第三方Autolayout库,在转Swift后发现虽然Swift可以混编OC,但总感觉有些麻烦,在Github上发现了这个叫做SnapKit的第三方库,发现使用起来更方便,与大家分享一下 1.在Github上下载SnapKit,选择iOS target 编译(Command+B),找到SnapKit.framework 2.右键“Show In Finder” 3.把这个文件拖到我们的工程中 4.如图,两处进行设置 5.然后我们就可以没羞没臊的在Swif

iOS真机调试引入第三方库(如友盟等)编译时候,出现错误提示

用Xcode 7 beta 3在真机(iOS 8.3)上运行一下工程,结果发现工程编译不过.看了下问题,报的是以下错误: MARK:解决方法:在building Setting 中设置bitCode 为NO file:///Users/libtop/Desktop/屏幕快照%202016-04-14%2011.17.15.png ld: ‘/Users/**/Framework/SDKs/PolymerPay/Library/mobStat/lib**SDK.a(**ForSDK.o)’does

引入第三方库jquery

npm install --save jquery 安装第三方库 npm install --save @types/jquery 安装类型描述文件 在angular-cli.json中引入 在组件中引入 declare var $:any;

laravel加入验证码类几种方法 && Laravel引入第三方库的方法

1,使用require , inlcude 的方法将验证码类文件包含进来,再进行new 2,将验证码类文件放于Http目录下面,也就是和控制器controller放在一个目录下面,在验证码类文件中加上命名空间,然后在控制器中使用use将文件引入(use引入的是绝对路径),就这样,也可以使用验证码中的方法了. 3,将类文件放在org目录,可以共用,具体操作请看下面. 1.首先在app目录下创建一个新的文件夹,命名libs(可自定义) 2.(可选)考虑到后面可能会引用很多库,so,在libs下再创建

android项目引入第三方库工程出现的问题及解决方案

一.导入libar库工程 1.使用第三方库工程libary,基本上都是从github上下载,解压后里面有个libary文件夹 2.将libary导入到eclipse中,步骤如下 1)在eclipse包管理器中,右键点击import,进入 2)选择红色部分,点击next 3)将libary导入,且勾选[copy projects into workspace](必须勾选),点击完成 二.android工程引用libary 1.新建一个android工程Mytest 2.右键MyTest属性 3.操

swift 中使用OC第三方库(以AFNetworking为例)

首先呢  把你需要的第三方库导入到你的项目中来  具体怎么导入 这不是这篇的重点  看上一篇 废话不多  直接上 (1)在项目中直接建一个 oc 的控制器  然后xcode会提醒你  要不要建造桥接文件  选择创建就OK了  看下图最下面  是我创建的 (2)确定使用那个桥接头文件 如下图 (3)在桥接文件里  直接这样写  如下图 (4)然后你就可以在你的项目中使用你添加的库了  就是这么简单 下面来看一下 我在swift中使用的AFNetworking 的实例代码  请求的是百度首页的数据

Swift中的Masonry第三方库——SnapKit

    在OC开发时我常用一个名叫Masonry的第三方Autolayout库,在转Swift后发现虽然Swift可以混编OC,但总感觉有些麻烦,在Github上发现了这个叫做SnapKit的第三方库,发现使用起来更方便,与大家分享一下 1.在Github上下载SnapKit,选择iOS target 编译(Command+B),找到SnapKit.framework 2.右键"Show In Finder" 3.把这个文件拖到我们的工程中 4.如图,两处进行设置 5.然后我们就可以没

IOS开发中有用的第三方库

#Objective-C中最受瞩目库 [链接](https://github.com/languages??/Objective-C/most_watched) * [three20](https://github.com/facebook/three20) * faebook的320库** * [AFNetworking](https://github.com/AFNetworking/AFNetworking) *网络库** * [MBProgressHUD](https://github.