Qt 在QBS中,如何在释放模式下将strip标志传递给链接器?
我在QtCreator4.5.1中使用MSYS2下的QBS1.10.1 当为链接步骤调用时,我想将Qt 在QBS中,如何在释放模式下将strip标志传递给链接器?,qt,gcc,qbs,Qt,Gcc,Qbs,我在QtCreator4.5.1中使用MSYS2下的QBS1.10.1 当为链接步骤调用时,我想将-s传递到g++,以减小释放模式二进制文件的大小。我该怎么做 到目前为止,我已经按照文件的建议进行了尝试: cpp.driverFlags: ["-municode", "-static", "-static-libgcc", "-static-libstdc++"] Properties { condition: qbs.configuration === "Rel
-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”
选项,这不是这些标志的正确行为。您的代码有两个问题:
qbs.buildVariant
,其中“release”
(全小写!)是一个已知值-s
不是驱动程序标志,而是实际的链接器标志,即ld
理解的选项。因此,您应该使用cpp.linkerFlags
。如果gcc前端用于链接,则该选项将自动转义您的代码有两个问题:
qbs.buildVariant
,其中“release”
(全小写!)是一个已知值-s
不是驱动程序标志,而是实际的链接器标志,即ld
理解的选项。因此,您应该使用cpp.linkerFlags
。如果gcc前端用于链接,则该选项将自动转义“release”
用小写字母表示,这让我很生气;在Qt Creator中,它始终以首字母大写的形式显示。在我意识到我的错误之前,我还发现条件:!qbs.debugInformation
起作用了。如果我在什么上下文中使用未定义的变量(而不是像变量是空值一样),有没有办法让它抱怨?小写的“release”
把我甩了;在Qt Creator中,它始终以首字母大写的形式显示。在我意识到我的错误之前,我还发现条件:!qbs.debugInformation
有效。如果我在什么上下文中使用未定义的变量(而不是像变量作为空值存在一样),有没有办法让它抱怨?