您如何检查您是否处于交互式 qmake 会话中?我想使用 qmake prompt()

How do you check if you are in an interactive qmake session ? I want to use qmake prompt()

我想用这个 mockup.pro 文件制作一个交互式 "qmake -makefile session" :

message("Plugin setup,")
message("choose the plugins you want to be compiled :")

answer=$$prompt("Dummy ? (y/N)")
equals(answer,"y"){
    SUBDIRS+= dummy
}

这在从交互式 shell 启动时很好,但是 AFAIK,qmake 从 QtCreator 输出在 "Compilation output" 窗格中启动,并且不是交互式的,因此提示块。

支持吗?

QMake 3.1、QtCreator 4.11


当我检查时:

IS_INT = $$system(echo $-)

IS_INT 始终为空,也就是辅助 shell 不可交互。

正如@hyde 所建议的那样,在另一个方向上,为了不打扰打包者或建立农场,将允许用户使用标志 CONFIG+=INTERACTIVE_QMAKE.

进行指导
INTERACTIVE_QMAKE{
    answer=$$prompt("Dummy ? (y/N)")
    equals(answer,"y"):{
        SUBDIRS+= dummy
    }
}
!INTERACTIVE_QMAKE{
    # The plugins you want compiled by default
    SUBDIRS+= dummy
}

CMake 正在为 Qt6 开发,这就可以了。