qmake "system"命令始终返回成功代码



我正在为一个复杂的Qt5程序编写自动构建系统。
其中一些C++源包含特殊标记,需要由外部实用程序处理。
所以我决定在 qmake 项目中编写一个自定义的预构建步骤,如下所示:

!build_pass {
    win32 {
         for( src, SOURCES ) {
            system("findstr "MY_CUSTOM_MARKER" $$src"):system( MyExternalUtil $$src )
         }
     }
}

但是首先system命令总是返回成功,即我的所有源都将被处理!
然而,官方的Qt文档说他们不应该。

所以我的问题是:为什么这样的system命令总是返回0

附言我在 Windows 命令提示符下尝试了一下:当找不到指定的文本时,findstr正确%errorlevel%设置为1

P.P.S这是解决方法(仅使用其他版本的system):

!build_pass {
    win32 { 
         for( SRC_PATH, SOURCES ) {
             FULL_SRC_PATH = "$$PWD/$$SRC_PATH"
             FULL_SRC_PATH = $$replace( FULL_SRC_PATH, /,  )
             FIND_RES = $$system( findstr "MY_CUSTOM_MARKER" $$FULL_SRC_PATH )
             !isEmpty( FIND_RES ) {
                 message( Processing $$SRC_PATH... )
                 system( MyExternalUtil $$FULL_SRC_PATH )
             }
         }
     }
 }
defineTest(systemWrapper) {
    ret = $$system($${ARGS} 2> /dev/null; echo $?)
    equals(ret, 0):return(true)
    return(false)
}

最新更新