news 2026/6/10 16:57:14

cmake 里 add_library 怎么理解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
cmake 里 add_library 怎么理解

一、基本介绍

add_library是 CMake 中创建库文件(静态库或动态库)的核心命令。

它的主要作用是将源代码文件编译成库,以便在项目中复用或被其他目标链接。

基本语法如下所示:

add_library(<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 [source2 ...])

各参数说明如下:

1、库类型:

(1)静态库 STATIC (最终生成.a或.lib)

例如:

add_library(mylib STATIC src1.cpp src2.cpp)

(2) 动态库 SHARED (最终生成.so 或 .dll)

例如:

add_library(mylib SHARED src1.cpp src2.cpp)

(3) 插件式动态库 MODULE(通常不被直接链接)

(4) 不指定类型,根据BUILD_SHARED_LIBS变量决定

set(BUILD_SHARED_LIBS ON) # 默认为动态库

2、EXCLUDE_FROM_ALL 参数理解

EXCLUDE_FROM_ALL是cmake中的一个控制构建行为的标志,它的作用是标记某个目标默认不构建,除非该目标被明确指定或作为其他目标的依赖。

使用场景:

(1)构建可选的组件/插件

# 主要应用程序(默认构建) add_executable(main_app main.cpp) # 可选插件(默认不构建) add_library(plugin_a EXCLUDE_FROM_ALL plugin_a.cpp) add_library(plugin_b EXCLUDE_FROM_ALL plugin_b.cpp) # 只有在明确请求时才构建插件 # cmake --build . --target plugin_a

(2)测试目标

# 主库(默认构建) add_library(main_lib src/core.cpp) # 测试程序(默认不构建) add_executable(run_tests EXCLUDE_FROM_ALL tests/test1.cpp tests/test2.cpp ) # 构建测试需要明确指定 # cmake --build . --target run_tests

大型项目模块化构建或者测试套件管理可以使用这种思路。

3、源文件添加

.h不参与构建,只需要添加.cpp文件。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 22:42:42

语音合成与私有化部署结合:保障金融行业语音数据安全性

语音合成与私有化部署结合&#xff1a;保障金融行业语音数据安全性 在金融服务日益智能化的今天&#xff0c;客户对交互体验的要求不断提升。从自动外呼到虚拟理财顾问&#xff0c;语音合成&#xff08;TTS&#xff09;技术正深度嵌入银行、保险、证券等核心业务流程中。然而&a…

作者头像 李华
网站建设 2026/6/10 13:35:12

GD32E10x 两块FLASH分别用来固化程序和存储数据

一、前期准备 1. 工具与环境 编译器:Keil MDK-ARM(需支持 GD32E10x,建议 V5.28+) 芯片库:GD32E10x 标准外设库(从兆易创新官网下载,含启动文件、寄存器定义) 调试器:J-Link/ST-Link(需配置 GD32E10x 的调试算法) 辅助工具:GD32 Flash Programmer(用于烧录和分…

作者头像 李华
网站建设 2026/6/10 12:56:45

GLM-TTS JSONL任务文件格式详解:避免批量失败的结构规范

GLM-TTS JSONL任务文件格式详解&#xff1a;避免批量失败的结构规范 在语音合成系统日益走向自动化与工业化的今天&#xff0c;一个看似不起眼的技术细节——任务配置文件的格式设计&#xff0c;往往决定了整个流水线是高效运转还是频繁“掉链子”。尤其是在使用如 GLM-TTS 这类…

作者头像 李华
网站建设 2026/6/9 23:43:48

GLM-TTS输出目录管理技巧:自动归档与命名规则设定

GLM-TTS输出目录管理技巧&#xff1a;自动归档与命名规则设定 在语音合成项目中&#xff0c;最让人头疼的往往不是模型跑不通&#xff0c;而是任务完成后面对一堆名为 output.wav、output_1.wav 甚至 temp_final_real_v2.wav 的文件时的那种无力感。尤其当使用像 GLM-TTS 这类支…

作者头像 李华
网站建设 2026/6/10 13:00:38

Kanass快速上手指南:如何进行任务管理

之前介绍了如何有效管理、跟踪需求&#xff0c;本文将介绍如何在事项模块中创建与管理任务。1、添加任务进入kanass项目&#xff0c;页面会自动定位到事项页面。点击添加事项->任务&#xff0c;填写任务标题与描述&#xff0c;选择任务类型等信息属性说明属性是否必填描述标…

作者头像 李华
网站建设 2026/6/9 22:19:55

PHP + Modbus/TCP 实现工业状态查询全记录(实战代码+性能调优)

第一章&#xff1a;PHP在工业控制中的应用背景尽管PHP常被视为Web开发语言&#xff0c;但其在工业控制系统&#xff08;ICS&#xff09;中的潜在应用正逐渐显现。随着工业自动化系统向信息化与网络化融合&#xff0c;PHP凭借其快速开发、良好的数据库交互能力和广泛的服务器支持…

作者头像 李华