当前位置: 首页 > news >正文

CMake 010 :一步到位链接静态库

CMake 010 一步到位链接静态库Bilibili 同步视频一、先把地基打好编译 XLOG 静态库1.1 编译命令标准 CMake out-of-source 构建1.2 库输出位置二、创建测试项目test_xlog2.1 最简测试代码test_xlog.cpp2.2 你会立刻遇到 3 个经典错误三、CMakeLists.txt 完整配置核心关键语法解释四、编译运行两种路径都支持方式 1源码目录执行最常用方式 2进入 build 目录执行五、Windows 平台注意事项自动适配 Debug/Release六、完整目录结构一目了然七、总结链接静态库的 4 步万能公式Bilibili 同步视频CMake 010 一步到位链接静态库在跨平台 C 开发中静态库编译 外部项目链接是高频且容易踩坑的环节。头文件找不到、符号未定义、链接失败…… 这些问题看似琐碎却直接决定编译能否跑通。本文以XLOG 日志库为例从零到一完成库编译 → 测试项目创建 → CMake 配置 → 双平台成功运行把每一步错误与修复讲透让你真正理解「预处理 - 编译 - 链接」三阶段到底在做什么。一、先把地基打好编译 XLOG 静态库我们先确保 XLOG 本身编译完成生成可用的静态库文件。1.1 编译命令标准 CMake out-of-source 构建# 进入 XLOG 根目录cdxlog# 生成构建文件-S源码目录 . -B构建目录 buildcmake-S.-Bbuild# 开始编译cmake--buildbuild1.2 库输出位置Linuxbuild/libxlog.aWindowsbuild/Debug/xlog.lib/build/Release/xlog.lib✅ 关键静态库统一放在 build 目录后续链接只需要指向这个路径即可。二、创建测试项目test_xlog我们在与 xlog 同级目录创建测试项目test_xlog只做一件事实例化 XLOG 对象验证库能正常调用。2.1 最简测试代码test_xlog.cpp#includeiostream// 后续通过 CMake 指定路径#includexlog.husingnamespacestd;intmain(){// 实例化 调用构造函数 必须链接到库实现XLog log;couttest_xlog run success!endl;return0;}2.2 你会立刻遇到 3 个经典错误这是 C 编译的标准三段式报错必须理解预处理错误找不到xlog.h头文件路径未指定编译错误找不到XLog类型声明依然是头文件问题链接错误undefined reference 未定义符号没链接静态库三、CMakeLists.txt 完整配置核心直接给可复制的完整版每一行都加注释一看就懂。# CMake 最低版本要求 cmake_minimum_required(VERSION 3.20) # 项目名称 project(test_xlog) # # 1. 添加头文件搜索路径 # 相对路径相对于本 CMakeLists.txt 所在目录 # include_directories(../xlog) # # 2. 添加库文件搜索路径 # link_directories(../xlog/build) # # 3. 生成可执行程序 # add_executable(${PROJECT_NAME} test_xlog.cpp) # # 4. 链接静态库无需 lib 前缀 / .a / .lib # target_link_libraries(${PROJECT_NAME} xlog)关键语法解释include_directories(...)等价于g -I路径告诉编译器去哪里找头文件。link_directories(...)告诉链接器库文件在哪个目录。target_link_libraries(目标 库名)给可执行文件绑定要链接的库跨平台自动适配Linux找libxlog.aWindows找xlog.lib四、编译运行两种路径都支持方式 1源码目录执行最常用cdtest_xlog cmake-S.-Bbuild cmake--buildbuild# 运行./build/test_xlog方式 2进入 build 目录执行cdtest_xlog/build cmake..make# 或 cmake --build .✅ 成功输出create xlog test_xlog run success!五、Windows 平台注意事项自动适配 Debug/ReleaseWindows 下编译后库会放在Debugxlog/build/Debug/xlog.libReleasexlog/build/Release/xlog.lib你不需要手动改路径CMake 会根据当前编译配置自动进入对应子目录查找库一套 CMakeLists 全平台通用。六、完整目录结构一目了然./ ├── xlog/ # 日志库项目 │ ├── xlog.h │ ├── xlog.cpp │ └── build/ # 编译输出libxlog.a / xlog.lib └── test_xlog/ # 测试项目 ├── CMakeLists.txt ├── test_xlog.cpp └── build/ # 测试程序输出七、总结链接静态库的 4 步万能公式编译库 → 得到.a/.lib用include_directories加头文件路径用link_directories加库路径用target_link_libraries绑定库只要按这个流程Linux / Windows / macOS三平台链接静态库再也不会报错。
http://www.rkmt.cn/news/1298903.html

相关文章:

  • 如何5分钟搞定在线视频下载?VideoDownloadHelper终极指南让你告别烦恼
  • Windows 11终极指南:WSABuilds 2407.40000.4.0_v2版本完整安装与配置教程
  • 3D打印柔性LED灯带雪花装饰:从电路原理到创意制作全解析
  • 基于Adafruit HalloWing的互动魔法书:嵌入式硬件与手工艺术的融合
  • 2026年Q2风电行业变革,四类基础油国产化如何破局? - 2026年企业推荐榜
  • ROFL-Player:终极免费英雄联盟回放播放器解决方案
  • ElevenLabs匈牙利语音合成效果深度测评(实测12种场景+WAV/MP3/SSML对比数据)
  • Mac Mouse Fix:让你的普通鼠标在Mac上获得魔法般的使用体验
  • 小米手表表盘设计工具Mi-Create:零代码打造专属智能穿戴界面
  • 别再手动敲命令了!用Shell的Here Document自动化你的SFTP/MySQL登录操作
  • RML2016.10a数据集读取避坑指南:用Python pickle解决‘latin-1’编码报错
  • Smart-10 多模光时域反射仪:铁路高速光纤故障首选
  • 鸿蒙 HarmonyOS 6.0 页面代码构建实战解析
  • 观察Taotoken在多轮对话场景下的token消耗与计费明细
  • AI 术语通俗词典:优化器
  • 用国产RISC-V芯片CH32V307VCT6,手把手教你DIY一个高速USB转CAN调试器(兼容CANable)
  • 基于ESP32-S2与超声波传感器的低功耗物联网水位监测系统实践
  • Linux内核模块参数详解:驱动开发的动态配置与实战指南
  • ESP-SR语音识别框架深度剖析:高性能嵌入式唤醒词与命令识别解决方案
  • CircuitPython实战:PWM精准控制舵机与可编程LED灯带
  • 暗黑破坏神II终极角色编辑器:Diablo Edit2完全使用指南
  • 百度网盘Mac版破解插件:免费解锁SVIP高速下载的终极指南
  • 保姆级教程:在OBS Studio里开启H.264帧内刷新,解决录屏文件体积暴增问题
  • FontForge:从零到一的免费字体设计全攻略
  • 别再只盯着图片了!用3DCNN处理视频动作识别,从原理到代码实战(PyTorch版)
  • 从ICEdot拆解看低功耗物联网设备:BLE、IMU与碰撞检测算法实践
  • CircuitPython与NeoPixel打造赛博朋克齿轮护目镜:从硬件选型到代码解析
  • 网安python毕业设计项目选题帮助
  • Taotoken API Key精细化管理与审计日志的实际价值
  • 从开发者视角感受Taotoken分钟级接入与标准协议带来的便利