CMake静态库

本文介绍如何使用CMake创建并生成静态库,并链接到目标可执行文件。具体包括使用add_library指令添加静态库,以及target_link_libraries指令来设置链接方式为PRIVATE、PUBLIC或INTERFACE。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CMake 静态库

参考Github

  • 添加并生成静态库
add_library(hello_library STATIC
    src/Hello.cpp
)

build阶段会生成libhello_library.a 文件

  • 目标可执行文件链接静态库
target_link_libraries( hello_binary
    PRIVATE
        hello_library
)
  • 如果目标的头文件中包含了依赖的头文件(源文件间接包含),那么这里就是PUBLIC
  • 如果目标仅源文件中包含了依赖的头文件,那么这里就是PRIVATE
  • 如果目标的头文件包含依赖,但源文件未包含,那么这里就是INTERFACE
CMake中,构建静态库通常涉及以下几个步骤[^2]: 1. **使用ADD_LIBRARY**:通过`ADD_LIBRARY(<target_name> STATIC <source_files>)`命令创建静态库,其中`<target_name>`是你给库指定的名字,`STATIC`表示静态链接,`<source_files>`是包含库功能的源文件列表。 ```cmake ADD_LIBRARY(my_library STATIC src1.cpp src2.cpp) ``` 2. **设置目标属性**:有时,你可能需要同时构建动态库和静态库,这时可以使用`SET_TARGET_PROPERTIES`。例如,设置同名动态库和静态库的版本信息: ```cmake SET_TARGET_PROPERTIES(my_library PROPERTIES VERSION 1.0.0 SOVERSION 1) ``` 3. **安装**:当项目构建完成后,可以使用`INSTALL(TARGETS <target> DESTINATION <install_path>)`命令安装库,包括头文件和库文件: ```cmake INSTALL(FILES my_library.h DESTINATION include) INSTALL(TARGETS my_library RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) ``` 4. **搜索路径**:使用`INCLUDE_DIRECTORIES`和`LINK_DIRECTORIES`添加非标准的头文件和库文件搜索路径,确保编译器能找到它们: ```cmake INCLUDE_DIRECTORIES(/path/to/headers) LINK_DIRECTORIES(/path/to/libraries) ``` 5. **链接**:通过`TARGET_LINK_LIBRARIES`连接到其他库: ```cmake TARGET_LINK_LIBRARIES(my_library other_library) ``` 6. **编译条件和平台判断**:CMake允许你根据编译条件和平台选择不同的构建行为,这部分未在此详述,但它是CMake高级用法的一部分。 记住,每次更改CMakeLists.txt文件后,都需要运行`cmake`或`cmake-gui`重新配置项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值