介绍
如何在Clion中引入第三方库?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
CMake的所有配置都写在一个叫CMakeLists。txt的文件当中,所有的配置都写在该文件当中。
这是我的工程目录结构,包括文件夹为acl-redis的所有头文件,自由文件夹为acl-redis的静态库,在下面的介绍过程中会以此为例子来讲解如何引入自由文件夹下的静态库。
声明路径变量
#声明头文件路径 集(INC_DIR 。/包括) #声明链接库路径 集(LINK_DIR /lib)
这里采用的是相对路径的方式来引用头文件和库文件,这样工程位置发生改变的时候,可以不用修改配置文件,其中。/表示当前路径。
引入头文件和库文件
#引入头文件 include_directories ($ {INC_DIR}) #引入库文件 link_directories ($ {LINK_DIR})
在CMake中,${}的语法含义是获取变量的值,这和壳中获取变量值的方式很相似,在项目中引入了头文件和库文件,这样在编译的时候才知道到哪里去寻找相应的头文件和库文件。
设置编译文件
#添加编译文件 add_executable (TestRedis cluster.cpp)
TestRedis为我在CMake中设置的项目名称(后面会将完整的CMake文件展示出来),集群。cpp为我要编译的文件。
引入第三方库
#将第三方库链接在一起 target_link_libraries (TestRedis lib_acl_cpp.a  lib_acl.a lib_protocol.a  pthread)
此时将需要链接的第三方库链接在一起即可。
完整的CMake配置文件
#设置CMake版本 cmake_minimum_required (VERSION 3.15) #项目名字 项目(TestRedis) #设置编译版本 集(CMAKE_CXX_STANDARD 14) #设置头文件路径 集(INC_DIR 。/包括) #设置链接库路径 集(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。一个再引用的话,将出现找不到库文件的错误,这一点没有找到原因。
CMake配置文件中的一些语句可以适当调整顺序,但add_executable语句必须要在target_link_libraries语句的前面。