You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake中能否在add_library后将库标记为静态库?

能否在CMake中先创建默认库再改为静态库?

答案是不能直接修改已创建目标的类型,但可以通过调整配置或修改代码实现类似效果,具体细节如下:

  • 首先明确:add_library(mylib mylib.c)这种不带类型的写法,实际创建的库类型由全局变量BUILD_SHARED_LIBS控制:

    • 当BUILD_SHARED_LIBS设为ON时,默认生成共享(动态)库
    • 当BUILD_SHARED_LIBS设为OFF时,默认生成静态库
  • 一旦用add_library创建了mylib目标,它的库类型就被固定了,无法通过后续命令(比如set_target_properties)修改——CMake会将目标类型视为只读属性,强行修改会触发错误。

  • 想要生成静态库,有两种靠谱的方式:

    1. 在add_library(mylib mylib.c)之前添加配置:set(BUILD_SHARED_LIBS OFF),让默认行为变为创建静态库
    2. 直接修改add_library调用,明确指定静态库类型:add_library(mylib STATIC mylib.c)

内容的提问来源于stack exchange,提问作者einpoklum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 20:46:59