0

我在 MSYS2 下的 Qt Creator 4.5.1 中使用 QBS 1.10.1。

我想在调用链接步骤时传递-sg++,以减小发布模式二进制文件的大小。我该怎么做呢?

到目前为止,我已经按照文档的建议进行了尝试:

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

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

但是它实际上并没有通过-sin Release 模式,即好像 Properties 块不存在。

注意:cpp.driverFlags选项实际上将标志传递给 的所有实例g++,而不仅仅是链接步骤;但是我一直无法找到只为链接步骤指定标志的方法。如果不是链接步骤,g++ 足够聪明,可以忽略这些标志。该cpp.linkerFlags字段实际上将标志转换-Wl,"flag"为不适合这些标志的选项。

4

1 回答 1

2

您的代码有两个问题:

  1. 您不应测试 qbs.configuration 的值,它是用户设置的任意字符串。相反,使用qbs.buildVariant, 其中"release"(全部小写!)是一个已知值。

  2. -s不是驱动程序标志,而是实际的链接器标志,即可以ld理解的选项。因此,您应该使用cpp.linkerFlags. 如果 gcc 前端用于链接,该选项将自动转义。

于 2018-03-16T06:54:53.873 回答