阶段 2.2:CMake 进阶(多文件 + 库编译与链接)
学习目标
- 掌握库的编译(静态 / 动态):
add_library - 学会头文件路径配置:
include_directories - 掌握库的链接:
target_link_libraries
核心知识点
- 库编译:add_library(calc STATIC add.c sub.c):静态库(STATIC 可省略,默认静态)add_library(calc SHARED add.c sub.c):动态库
- 头文件路径:
include_directories(./)(指定头文件所在目录) - 链接库:
target_link_libraries(main calc)(将 calc 库链接到 main)
实战练习
练习 2:多文件 + 库编译与链接
步骤 1:复用main.c、add.c、sub.c、calc.h(同 Make 练习 3)。
步骤 2:编写CMakeLists.txt
cmake_minimum_required(VERSION 3.10) project(Calc) # 指定头文件目录 include_directories(./) # 编译动态库:calc是库名,SHARED是动态库,源文件是add.c和sub.c add_library(calc SHARED add.c sub.c) # 生成可执行文件main add_executable(main main.c) # 链接calc库到main target_link_libraries(main calc)
步骤 3:构建执行
mkdir build && cd build cmake .. make # 运行(动态库路径处理同Make) export LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH ./main
练习 3:通过变量控制库类型(静态 / 动态)
修改 CMakeLists.txt,添加option控制库类型:
cmake_minimum_required(VERSION 3.10) project(Calc) include_directories(./) # 选项:是否编译动态库(默认ON) option(BUILD_SHARED_LIBS "Build shared library" ON) # 编译库:根据BUILD_SHARED_LIBS自动选择静态/动态 add_library(calc add.c sub.c) add_executable(main main.c) target_link_libraries(main calc)
执行:
# 编译静态库(关闭动态库选项) cmake -DBUILD_SHARED_LIBS=OFF .. make
构建工具学习 文章被收录于专栏
make cmake

