构建流程

CMake 教程 · 第 4 章 · 7 次浏览

项目往往要拆成库 + 主程序:add_library 构建静态库(.a/.lib)或动态库(.so/.dll),主程序链接使用。

库类型

  • STATIC 静态库:编译进可执行文件,体积大、部署简单
  • SHARED 动态库:运行时加载,体积小、更新方便

链接方式

target_link_libraries(主程序 PRIVATE 库目标名),CMake 自动处理依赖。

代码示例

# 结构
# libmath/
#   CMakeLists.txt
#   math.h  math.cpp
# app/
#   CMakeLists.txt
#   main.cpp

# libmath/CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(MathLib CXX)
add_library(math STATIC math.cpp)
target_include_directories(math PUBLIC .)

# app/CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(App CXX)
add_executable(app main.cpp)
add_subdirectory(../libmath libmath_build)
target_link_libraries(app PRIVATE math)