如何在CMake中仅生成静态库而不生成可执行文件
CMake仅生成静态库的实现方案
CMake的add_library指定STATIC参数时,会自动调用对应编译器的静态库打包工具,GCC环境下就是自动执行ar rsv相关命令生成.a静态库,无需手动配置打包规则。
你删除add_executable配置后报错,通常是两个原因导致:
- 没有同步删除对应的
target_link_libraries(myexe mylib)行,该行引用了已被删除的myexe目标,会触发目标不存在的错误 - 你的CMakeLists.txt缺少基础必填配置,如CMake最低版本声明、项目声明
最小可运行配置
你只需要保留静态库的相关声明即可,完整示例如下:
# 按需调整最低支持的CMake版本 cmake_minimum_required(VERSION 3.10) # 自定义项目名称 project(mylib_builder) # 声明静态库目标 add_library(mylib STATIC file1.cpp file2.cpp)
编译操作说明
配置完成后按常规流程生成构建文件即可:
- 命令行通用编译命令(适配所有构建系统):执行
cmake --build . --target mylib,直接指定编译静态库目标 - 如果你使用Makefile构建体系,也可以直接执行
make mylib完成编译
内容的提问来源于stack exchange,提问作者stunicks
相关产品推荐
相关产品推荐

