Cmake安装与动态库和静态库使用方法

一、Cmake工具安装

  • 工具下载地址https://cmake.org/download/
    选择对应的版本和架构进行下载
    在这里插入图片描述
  • 通过安装Clion来安装cmake工具
    clion下载地址:https://www.jetbrains.com/clion/
    安装完成后可以在安装目录下找到对应的工具目录,然后自行设置环境变量
    在这里插入图片描述
  • 使用cmake
    # 创建存储缓存文件的文件夹,build
    mkdir build && cd build
    
    # 使用CMake命令生成makefile文件
    cmake ..
    
    # 使用make命令进行编译, 有make可以使用make
    cmake --build .
    

二、生成动态库与静态库并使用

  • 动态库: 后缀为 so、dll
    在编译过程中不会将其打包到可执行文件中,是在程序运行的时候才进行载入的,可以节省内存空间,也方便跟新库文件

  • 静态库:后缀为 lib、.a
    在编译过程中会将静态库打包到可执行文件中,每次更新静态库,可以执行文件都需要重新进行编译

  • 静态库生成与使用(使用clion)
    1、新建项目并选择为C++库,库类型选择static
    在这里插入图片描述
    2、创建完会生成初始文件如下:
    在这里插入图片描述
    3、cmakelists.txt

    cmake_minimum_required(VERSION 3.29)
    project(mylib)
    set(CMAKE_CXX_STANDARD 11)
    # 生成为静态库
    add_library(mylib STATIC library.cpp)
    # 设置安装目录
    SET(CMAKE_INSTALL_PREFIX ${PROJECT_BINARY_DIR}/${PROJECT_NAME}_lib)
    # 拷贝头文件 到 include 目录下
    INSTALL(FILES library.h DESTINATION include)
    INSTALL(TARGETS mylib LIBRARY DESTINATION lib)
    

    4、点击构建与安装,生成对应的lib文件
    在这里插入图片描述
    在这里插入图片描述
    5、将生成的lib目录拷贝到自己的项目下,并配置cmakelists.txt,就完成了静态库文件使用
    可以在再导入头文件后,使用其中定义的方法
    在这里插入图片描述

    # 配置头文件目录
    include_directories(${PROJECT_SOURCE_DIR}/mylib_lib/include)
    # 配置静态库目录
    link_directories(${PROJECT_SOURCE_DIR}/mylib_lib/lib)
    # 引用对应的库文件
    link_libraries(libmylib.a)
    
  • 动态库生成与使用(使用clion)
    1、在上面静态库生成的cmakelists.txt文件中进行修改,使其生成动态库文件

    cmake_minimum_required(VERSION 3.29)
    project(mylib)
    
    set(CMAKE_CXX_STANDARD 11)
    
    #生成动态库
    **add_library(mylib SHARED library.cpp)**
    #生成静态库
    #add_library(mylib STATIC library.cpp)
    
    #设置安装目录
    SET(CMAKE_INSTALL_PREFIX ${PROJECT_BINARY_DIR}/${PROJECT_NAME}_lib)
    
    #拷贝头文件 到 include 目录下
    INSTALL(FILES library.h DESTINATION include)
    #INSTALL(TARGETS mylib ARCHIVE DESTINATION lib)
    #将dll文件安装到lib下
    INSTALL(TARGETS mylib  LIBRARY DESTINATION lib)
    

2、构建安装,生成对应的库目录
在这里插入图片描述
3、将目录拷贝到项目中
在这里插入图片描述
配置cmakelists.txt

# 配置头文件目录
include_directories(${PROJECT_SOURCE_DIR}/mylib_lib/include)
# 配置静态库目录
link_directories(${PROJECT_SOURCE_DIR}/mylib_lib/bin)
# 引用对应的库文件
link_libraries(libmylib.dll)

配置环境运行的环境变量或者将动态库文件拷贝到可执行文件同级目录
将动态库文件的路径配置到用户环境变量中
在这里插入图片描述
配置cmakelists.txt拷贝到可执行文件的同级目录
这句话的意思就是在编译完成后,执行cmake命令将库文件拷贝到cmake-build-debug

add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/mylib_lib/bin $<TARGET_FILE_DIR:cTest1>)

在这里插入图片描述

最后还有一种连接法:
用创建软连接的方法实现,暂时还没有成功

add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/mylib_lib/bin $<TARGET_FILE_DIR:cTest1>/bin)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值