问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

CMake生成静态链接库并导入使用详解

创作时间:
作者:
@小白创作中心

CMake生成静态链接库并导入使用详解

引用
CSDN
1.
https://m.blog.csdn.net/qq_42102546/article/details/145803764

本文将介绍如何使用CMake生成静态链接库,并在另一个项目中导入和使用该静态库。通过本文的学习,读者将能够掌握CMake的基本使用方法,以及如何创建和使用静态库。

1. 创建静态库项目

项目结构

首先,创建一个名为xlog的文件夹,用于存放静态库的相关代码。在该文件夹下创建以下文件:

  • CMakeLists.txt
  • xlog.cpp
  • xlog.h

CMakeLists.txt

# CMakeLists.txt cmake文件名大小写不敏感
# 指定cmake最低版本
cmake_minimum_required(VERSION 3.20)
# 构建项目的名称
project(first_cmake)
# 创建各种类型的库
# [STATIC | SHARED | MODULE]:可选参数
# STATIC:创建静态库,静态库在链接时会被完整地复制到可执行文件中。
# SHARED:创建共享库(动态链接库),共享库在运行时动态加载,多个程序可以共享同一个共享库。
# MODULE:创建模块库,通常用于插件系统,不会被链接到可执行文件中,而是在运行时通过特定机制加载。如果不指定该参数,CMake 会根据 BUILD_SHARED_LIBS 变量的值来决定创建静态库还是共享库。
add_library(xlog STATIC xlog.cpp xlog.h)
# 构建执行程序
# add_executable(first_cmake 101first_cmake.cpp)

xlog.cpp

#include "xlog.h"
#include <iostream>
using namespace std;
XLog::XLog() {
    cout << "Create Xlog" << endl;
}

xlog.h

//xlog.h
#ifndef XLOG_H
#define XLOG_H
class XLog
{
public:
    XLog();
};
#endif

构建静态库

xlog文件夹下创建一个名为build的目录,然后执行以下命令:

mkdir build
cd build
cmake ..
cd ..
cmake --build build

构建完成后,可以在build目录下看到生成的静态库文件libxlog.a

2. 使用静态库

接下来,创建一个名为test_xlog的项目,用于测试刚刚创建的静态库。

项目结构

test_xlog文件夹下创建以下文件:

  • CMakeLists.txt
  • test_xlog.cpp
  • run.sh

CMakeLists.txt

# CMakeLists.txt cmake文件名大小写不敏感
# 指定cmake最低版本
cmake_minimum_required(VERSION 3.20)
# 构建项目的名称
project(test_xlog)
# 注意在设定查找时是根据 当前cmakelists.txt的相对路径进行查找的
# 指定头文件查找路径
include_directories("../xlog")
# 指定库查找路径
link_directories("../xlog/build")
# 构建执行程序
add_executable(test_xlog test_xlog.cpp)
# 指定加载的库 (要放置 构建执行程序后面, 因为这是加载执行程序的依赖库)
target_link_libraries(test_xlog xlog)

test_xlog.cpp

#include <iostream> 
#include "xlog.h"
using namespace std;
int main(){
    XLog log; 
    cout<<"test xlog"<<endl; 
    return 0;
}

run.sh

为了方便构建,可以创建一个run.sh脚本:

cd /root/UniSecurity/cmake_xue/test_xlog
rm -r build
mkdir build
cd build
cmake ..
cd ..
cmake --build build

执行run.sh脚本后,将在test_xlog/build目录下生成可执行文件test_xlog。运行该可执行文件,可以看到输出结果:

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号