如何在QBS中以释放模式将strip标志传递给链接器?

时间:2018-03-16 00:59:48

标签: qt gcc qbs

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

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

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

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

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

然而它实际上并没有在释放模式下通过-s,即它就像没有属性块一样。

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

1 个答案:

答案 0 :(得分:2)

您的代码存在两个问题:

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

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