某些QMake项目使用system()
命令,这些命令仅应在构建期间执行,并且通常仅在特定的OS上执行,例如:
win32:system(cmd.exe /E myscript.bat)
从历史上看,Qt Creator在解析.pro / .pri文件时会忽略此类命令。但是从Qt Creator 4.13.0开始,它现在可以在项目加载期间运行它们,这可能导致意外的动作或失败。
我们如何告诉Qt Creator不要从.pro / .pri文件中解析特定的语句或块,以使它们仅由QMake本身执行?
答案 0 :(得分:0)
通过将命令包含在!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 {}
而不使用否定运算符即可。