我在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"
选项,这对于这些标志不是正确的行为。
答案 0 :(得分:2)
您的代码存在两个问题:
您不应测试qbs.configuration的值,qbs.configuration是用户设置的任意字符串。相反,请使用qbs.buildVariant
,其中"release"
(全部小写!)是已知值。
-s
不是驱动程序标志,而是实际的链接器标志,即ld
理解的选项。因此,您应该使用cpp.linkerFlags
。如果使用gcc前端进行链接,该选项将自动转义。