news 2026/9/3 0:38:25

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/9/2 22:28:53

如何通过Markdown编写GLM-TTS任务脚本提升工作效率

如何通过Markdown编写GLM-TTS任务脚本提升工作效率 在一场广播剧的后期制作中&#xff0c;团队需要为15个角色生成超过200句台词&#xff0c;每句都要匹配特定音色、口音和情绪。传统做法是配音导演逐条试听、调整参数、手动点击合成——一个下午只能完成不到20条。而隔壁组用了…

作者头像 李华
网站建设 2026/9/3 0:23:10

用PHP打造高响应智能家居场景(基于真实项目的数据分析与实践)

第一章&#xff1a;PHP 智能家居场景模式概述在现代物联网&#xff08;IoT&#xff09;生态中&#xff0c;智能家居系统通过自动化场景模式提升居住体验。PHP 作为一种广泛使用的服务器端脚本语言&#xff0c;虽不直接控制硬件&#xff0c;但可通过构建后端服务协调设备行为&am…

作者头像 李华
网站建设 2026/9/2 22:46:15

书籍-《巴布尔回忆录》

《巴布尔回忆录》详细介绍 书籍基本信息 书名&#xff1a;巴布尔回忆录&#xff08;Baburnama&#xff0c;又称《瓦卡伊-巴布里》或《巴布尔自传》&#xff09; 作者&#xff1a;巴布尔&#xff08;Zahir-ud-Din Muhammad Babur&#xff0c;1483-1530年&#xff09; 成书时间&a…

作者头像 李华
网站建设 2026/8/31 20:00:51

PHP低代码权限管理系统落地案例(金融、医疗、政务三大场景曝光)

第一章&#xff1a;PHP低代码权限管理系统的时代机遇在数字化转型加速的背景下&#xff0c;企业对快速构建安全、灵活的应用系统需求日益增长。PHP作为长期活跃于Web开发领域的语言&#xff0c;结合低代码平台的可视化能力&#xff0c;正迎来重构权限管理体系的新机遇。通过将复…

作者头像 李华
网站建设 2026/8/28 2:13:20

凌晨告警不断?资深SRE教你动态调整PHP服务阈值策略

第一章&#xff1a;凌晨告警不断&#xff1f;从SRE视角看PHP服务监控的痛点对于站点可靠性工程师&#xff08;SRE&#xff09;而言&#xff0c;凌晨三点的PagerDuty告警往往意味着一场未知的战斗。当PHP服务突然响应延迟飙升、错误率陡增&#xff0c;却缺乏足够的上下文信息时&…

作者头像 李华
网站建设 2026/8/28 3:01:27

PHP低代码权限管理完全手册(从入门到高阶架构设计)

第一章&#xff1a;PHP低代码权限管理的核心概念在现代Web应用开发中&#xff0c;权限管理是保障系统安全与数据隔离的关键环节。PHP作为广泛应用的服务器端语言&#xff0c;结合低代码平台能够显著提升权限系统的构建效率。低代码权限管理通过可视化配置和模块化设计&#xff…

作者头像 李华