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
。运行该可执行文件,可以看到输出结果:
热门推荐
新加坡徒步天花板!网友亲测6大经典路线,沿途风光美爆了~
脉冲直流电源与直流电源的不同
计算机研究生怎么选导师 应注意哪些方面
欧冠8强概率:4队稳了阿森纳100%!巴萨88%,皇马7成把握
退休年审怎么操作?
带你认识二十四节气
台式机配置选购攻略:避坑指南与实用技巧详解
揭秘!血糖仪如何精准测量?
如何查询社保缴费记录?这些缴费记录有何用途?
家属如何领取抚恤金:流程与标准详解
网站制作中的前端资源懒加载优化:提升首屏加载速度
重走河西走廊的千年岁月,看古老通道的历史流转
苹果的种植、采摘与营养:探索这个水果的多样性与健康益处
如何用心理学让你的游戏变得更易上手
如何固定电脑上的某个窗口不被关闭或最小化
古希腊:数学史上的黄金时期
当前股市表现最佳的五大板块:科技、消费、医药、金融和新能源
雨季“健康保卫战”:远离心脑血管、皮肤与消化道等疾病
心理学上有一个概念叫:习惯性反驳(附上缓解策略)
辽宁有座低调的宜居城市,比大连舒服,曾做过省会如今是五线城市
项目经理会上如何发言
种植牙陶瓷是什么?种植牙陶瓷的优势与选择指南
子女申请香港永居的必知事项
王毅外长点赞隆平高科援非故事
马鞍山美食地图:从百年老字号到网红打卡地
骨科手术患者的心理问题及护理对策
纳斯达克指数的高回报部分源自高风险
中国海上风电智能运维行业现状分析:未来海上风电运维更加专业化、标准化
如何提高人际交往能力?六大实用技巧助你建立和谐人际关系
血红蛋白低的原因与影响及改善方法解析,助您健康生活