微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何忽略一些qmake命令?

如何解决如何忽略一些qmake命令?

某些QMake项目使用system()命令,这些命令仅应在构建期间执行,并且通常仅在特定的OS上执行,例如:

win32:system(cmd.exe /E myscript.bat)

从历史上看,Qt Creator在解析.pro / .pri文件时会忽略此类命令。但是从Qt Creator 4.13.0开始,它现在可以在项目加载期间运行它们,这可能导致意外的动作或失败。

我们如何告诉Qt Creator不要从.pro / .pri文件中解析特定的语句或块,以使它们仅由QMake本身执行?

解决方法

通过将命令包含在!qtc_run {}块或内联条件中,可以禁用此类命令或Qt Creator不想解析的任何其他QMake语句:

!qtc_run {
    win32:system(copy myfile.txt dest\\folder)
    else:system(cp myfile.txt dest/folder)
}

!qtc_run:win32:system(cmd.exe /E myscript.bat)

Qt Creator在解析QMake项目时将qtc_run令牌添加到CONFIG变量中,因此在直接运行qmake时不会设置它,并且由于可以使用CONFIG变量对于条件块,您可以按照上面的步骤测试Qt Creator环境。

您还可以使用此技术仅在Qt Creator中运行某些QMake命令,只需使用qtc_run {}而不使用否定运算符即可。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。