阶段 2.2:CMake 进阶(多文件 + 库编译与链接)

学习目标

  1. 掌握库的编译(静态 / 动态):add_library
  2. 学会头文件路径配置:include_directories
  3. 掌握库的链接:target_link_libraries

核心知识点

  1. 库编译:add_library(calc STATIC add.c sub.c):静态库(STATIC 可省略,默认静态)add_library(calc SHARED add.c sub.c):动态库
  2. 头文件路径include_directories(./)(指定头文件所在目录)
  3. 链接库target_link_libraries(main calc)(将 calc 库链接到 main)

实战练习

练习 2:多文件 + 库编译与链接

步骤 1:复用main.cadd.csub.ccalc.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

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务