You need to enable JavaScript to run this app. CMake中OUTPUT_NAME的作用是什么?设置该属性的原因有哪些?
优惠活动
大模型
产品
解决方案
定价
更多

CMake中OUTPUT_NAME的作用是什么?设置该属性的原因有哪些?

CMake 中设置 OUTPUT_NAME 属性的原因说明

你提到的示例代码是 CMake 用于修改构建目标最终输出文件名的标准语法:

SET_TARGET_PROPERTIES(hello_static PROPERTIES OUTPUT_NAME "hello")

设置这个属性的常见原因主要有以下几点:

  • 解决同基础名不同类型目标的命名冲突
    CMake 不允许同一个项目中存在两个同名的构建目标,如果你需要同时生成同名的静态库和动态库,通常会把两个目标分别命名为hello_static和hello_shared做区分,但最终输出文件时你肯定不希望用户链接的时候还要区分libhello_static.a和libhello_shared.so,给两个目标都设置OUTPUT_NAME "hello"之后,最终输出的文件就会是符合常规命名规范的libhello.a和libhello.so,用户直接用-lhello就能正常链接。
  • 统一跨平台输出文件名,屏蔽平台默认规则差异
    不同操作系统对二进制文件的默认命名规则不一样:比如 Linux 下库文件默认带lib前缀,Windows 下动态库默认会带版本号后缀,部分编译环境还会自动给调试版生成的文件加_d后缀。通过OUTPUT_NAME可以强制指定输出文件名,保证不同平台下生成的最终文件名称统一,不用适配不同平台的默认规则。
  • 不修改目标内部标识的前提下适配发布规范
    很多项目内部对构建目标有统一的命名规则,比如按模块加前缀auth_module、pay_module,但对外发布的时候需要去掉内部前缀,改成auth、pay。这种场景直接修改OUTPUT_NAME即可,不需要调整整个 CMakeLists 中所有对该目标的引用,避免改漏引发构建错误。
  • 灵活自定义输出文件名,突破默认规则限制
    如果你的项目有特殊的命名需求,比如生成的可执行文件不需要带任何前缀后缀、或者要加自定义的标识,都可以通过OUTPUT_NAME直接指定,比修改全局的前缀/后缀规则灵活度更高。

内容的提问来源于stack exchange,提问作者anti-gravity

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 02:48:04