news 2026/4/18 15:57:41

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/4/5 14:01:20

语音合成与智能手表结合:微型设备触发云端TTS服务

语音合成与智能手表结合&#xff1a;微型设备触发云端TTS服务 在可穿戴设备日益普及的今天&#xff0c;用户不再满足于“能用”的基础功能&#xff0c;而是期待更自然、更个性化的交互体验。想象这样一个场景&#xff1a;你的智能手表轻轻震动&#xff0c;随后传来你母亲熟悉的…

作者头像 李华
网站建设 2026/4/18 10:50:57

GLM-TTS能否用于南极科考站?极夜期间语音心理干预

GLM-TTS能否用于南极科考站&#xff1f;极夜期间语音心理干预 在地球最南端的科考站里&#xff0c;连续数月不见阳光。没有昼夜交替&#xff0c;没有亲友在侧&#xff0c;只有风雪拍打舱壁的声音和仪器低沉的嗡鸣。长期驻守的科研人员在这种极端环境中&#xff0c;极易陷入情绪…

作者头像 李华
网站建设 2026/4/18 8:50:51

GLM-TTS能否用于极地科考?低温环境下语音通信保障

GLM-TTS在极地科考中的语音通信应用探索 在零下40℃的南极冰原上&#xff0c;狂风呼啸&#xff0c;能见度不足十米。科考队员正艰难地返回营地&#xff0c;此时对讲机里传来一段机械冰冷的语音&#xff1a;“气温已降至-38℃&#xff0c;请注意防寒。”——这样的信息虽然准确&…

作者头像 李华
网站建设 2026/4/18 0:09:25

【架构师私藏】:PHP微服务环境下配置中心的7种优雅实现方式

第一章&#xff1a;PHP微服务配置中心的核心价值与挑战在现代分布式架构中&#xff0c;PHP微服务的部署规模日益扩大&#xff0c;配置管理成为系统稳定性和可维护性的关键环节。集中化的配置中心不仅提升了环境一致性&#xff0c;还实现了配置的动态更新与版本控制。提升配置一…

作者头像 李华
网站建设 2026/4/17 19:21:27

GLM-TTS能否用于法律文书朗读?专业术语准确性验证

GLM-TTS能否用于法律文书朗读&#xff1f;专业术语准确性验证 在法院档案室里&#xff0c;一位视障律师正通过耳机听取一份长达30页的民事判决书。语音平稳、语调庄重&#xff0c;关键术语如“缔约方”“不可抗力”发音清晰准确——这并非真人录制&#xff0c;而是由AI合成的声…

作者头像 李华
网站建设 2026/4/18 8:30:40

语音合成与C#程序集成:在WinForm应用中调用GLM-TTS服务

语音合成与C#程序集成&#xff1a;在WinForm应用中调用GLM-TTS服务 如今&#xff0c;越来越多的桌面软件开始追求更自然、更具个性化的交互体验。尤其是在教育、客服、无障碍辅助等场景下&#xff0c;用户不再满足于机械生硬的“电脑音”&#xff0c;而是期望听到接近真人、带有…

作者头像 李华