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三平台链接静态库再也不会报错。