[CMake] [cmake-developers] Empty ERROR_VARIABLE in execute_process

Roman Wüger roman.wueger at gmx.at
Tue May 24 00:09:38 EDT 2016


Ok, thanks Brad.

Hello Qt Mailing list,

First i thought this is a bug in CMake but it has appeared that it seems to be a bug in qmllint:

Here the original question:

when I run qmllint from the command line to test an error I get:

C:\Tests>C:\Qt\5.6\msvc2015\bin\qmllint.exe test.qml
test.qml:1 : Syntax error

C:\Tests>echo %ERRORLEVEL%
-1

C:\Tests>


If I call this from a CMake script

execute_process(COMMAND C:/Qt/5.6/msvc2015/bin/qmllint.exe C:/Tests/test.qml
               RESULT_VARIABLE _resVar
               OUTPUT_VARIABLE _outVar
               ERROR_VARIABLE _errVar
             OUTPUT_STRIP_TRAILING_WHITESPACE
               ERROR_STRIP_TRAILING_WHITESPACE)

message("_resVar: ${_resVar}")
message("_outVar: ${_outVar}")
message("_errVar: ${_errVar}")

The output is:

1>  _resVar: -1
1>  _outVar:
1>  _errVar:

It seems that the error pipe isn’t read correctly, because _errVar is empty.

And hints?

Regards
Roman

> Am 23.05.2016 um 19:33 schrieb Brad King <brad.king at kitware.com>:
> 
>> On 05/23/2016 11:34 AM, Roman Wüger wrote:
>> I tried it with CMake 3.5.1 and 3.5.2 and now with the master with
>> the same result. I've attached an example which won't work.
> 
> I was able to reproduce it with that, but I also tried this:
> 
> add_custom_target(${PROJECT_NAME}-c2
>   COMMAND C:/Qt/5.6/msvc2015/bin/qmllint.exe ${CMAKE_CURRENT_SOURCE_DIR}/test.qml
>   )
> 
> The output does not appear in this case either.  No execute_process
> is involved, and qmllint is invoked directly by msbuild.  This has
> something to do with qmllint changing output behavior when it is
> executed inside a VS IDE (MSBuild) build.
> 
> -Brad
> 



More information about the CMake mailing list