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种方法助你重获心理健康
东阳至长春高铁旅行全攻略:行程规划、中转方案及实用贴士
《我的世界》僵尸围城终极攻略:照明、围墙和人口控制全方位防御指南
海带食谱,告别黑眼圈不再是梦
玄空风水揭秘:罗盘背后的秘密
指甲变化预警健康问题,你get了吗?
婚姻沟通四大技巧:从倾听到非暴力沟通全解析
冬天,吃山药红薯不如吃它,一解毒,二润肺,三降血压,别不懂吃
“神奇树水”白桦树汁:17种氨基酸助力健康,黑龙江打造千亿产业
《我的世界》僵尸村民复活攻略:从药水制作到交易技巧
69%夫妻问题长期存在,定期约会助关系升温
《我的世界》僵尸村民防御与利用完全指南
别让爱情吞噬自我:8个实用建议帮你保持独立
《我的世界》僵尸村民生存攻略:从捕捉到交易
元旦饭局礼仪大揭秘:职场晋升秘籍
解锁广东经典靓汤,凉瓜排骨黄豆汤的家常做法,味美又养生!
研究证实:Omega-3对心血管疾病患者有益,健康人需谨慎
每天30分钟有氧运动,提升“好”胆固醇降低心血管风险
东阳至长春高铁:一条连接南北的经济新动脉
沟通、成长、仪式感:李磊韩璐这样经营幸福婚姻
植酸:抗营养还是抗氧化?一文读懂它的双重身份
结草衔环:古人的善恶有报传奇
快递企业春节不打烊:智能设备保物流,专属福利暖人心
“全球最好的降压药”进入我国医保,患者能节省多少药费?
职场酒局,如何优雅地赢取人心?
昆明民族村泼水节:一场传统与时尚交融的多元文化盛宴
揭秘L型细菌:Emmy Klieneberger-Nobel的突破性发现
健康年货这样买:老人孩子都适用的贴心指南
从Omega-3到维生素B:五类食物帮你告别疲劳