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

如何在QBS的Release模式下为链接器传递strip(-s)参数?

在QBS中为Release模式的g++链接阶段添加-s参数的解决方案

我来帮你搞定这个问题!你遇到的核心问题是在Properties块里用了outer.concat来继承外层的cpp.driverFlags,这在QBS里是错误的写法,直接导致Release模式下的配置没生效。

原配置的问题分析

QBS里,当你在Properties块中想要引用当前属性的外层已有值时,得用base关键字,而不是outer。outer指向的是外层的项目/产品对象,并不是当前属性的已有参数列表,所以你的outer.concat("-s")根本没正确继承之前的["-municode", "-static", "-static-libgcc", "-static-libstdc++"]这些参数,自然也没把-s加进去。

正确的配置写法

把你的代码改成下面这样就行:

cpp.driverFlags: ["-municode", "-static", "-static-libgcc", "-static-libstdc++"]

Properties {
    condition: qbs.configuration === "Release"
    cpp.driverFlags: base.concat("-s")
}

为什么这样能生效?

  • base在这里代表外层定义的cpp.driverFlags参数列表,base.concat("-s")会把-s追加到原有参数的末尾,这样Release模式下的cpp.driverFlags就包含了你需要的所有参数。
  • 正如你提到的,cpp.driverFlags会传递给所有g调用,但g在编译阶段会自动忽略-s这个链接专用参数,只有在链接阶段才会生效,完全符合你的需求。

验证配置是否生效

你可以在Qt Creator的编译输出里搜索链接阶段的g++命令(通常是包含一堆.o文件的那行长命令),检查里面是否已经包含了-s参数,就能确认配置是否生效了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:11:00