cmake 使用(三)

本文是 cmake 使用的第三篇,主要介绍如何创建一个静态库并引用

上一篇的链接为:https://blog.csdn.net/QCZL_CC/article/details/119825103,主要介绍如何包含头文件。

示例目录结构如下:

02-static-library/
├── CMakeLists.txt
├── include
│   └── static
│       └── hello.h
└── src
    ├── hello.c
    └── main.c

将使用 02-static-library/include/static/hello.h 和 02-static-library/src/hello.c 创建一个静态库 libhello_library.a,然后链接到 02-static-library/src/main.c,最终生成可执行文件

CMakeLists.txt 规则如下:

# cmake 最低版本号
cmake_minimum_required(VERSION 3.5)

# 项目名称
project(hello_library)

################################################
# 创建库
################################################

# 从库源生成静态库,用于创建一个名为 libhello_library.a 的静态库
add_library(hello_library  STATIC
    src/hello.c
)

# 将范围设置为 PUBLIC,这将导致包含的目录在以下地方使用:
# 编译库时
# 编译链接库的任何其他目标时
# 其他的范围描述如下:
#   PRIVATE   - 目录被添加到这个目标的包含目录中
#   INTERFACE - 该目录将添加到链接此库的任何目标的包含目录中
#   PUBLIC    - 包含在此库中以及链接此库的任何目标中
target_include_directories(hello_library
    PUBLIC
        ${PROJECT_SOURCE_DIR}/include
)

################################################
# 创建可执行文件
################################################

add_executable(hello_binary
    src/main.c
)

# 将新的 hello_library 目标与 hello_binary 目标链接起来
# 这告诉 CMake 在链接期间将 hello_library 链接到 hello_binary 可执行文件。它还将从链接库目标传播具有 PUBLIC 或 INTERFACE 范围的任何包含目录
target_link_libraries(hello_binary
    PRIVATE
        hello_library
)

构建过程:

        1:mkdir build        创建该目录的目的是为了将编译产物和源文件分离

        2:cd build && cmake ..        cmake 后面第一个参数应该是 CMakeLists.txt 文件所在目录。此实例中 CMakeLists.txt 在 build 目录的上一级,所以使用 cmake ..

        3:make

下一篇:https://blog.csdn.net/QCZL_CC/article/details/119825506,主要介绍如何创建一个动态库并引用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值