[CMake] Output capturing in MSVC

Michael Wild themiwi at gmail.com
Tue Apr 26 15:57:29 EDT 2011


On 04/26/2011 02:16 PM, Brad King wrote:
> On 04/26/2011 03:41 AM, Michael Wild wrote:
>> Seems like MSVC (I'm using 9.0) is messing with the standard
>> streams... I put up a simple test project that only calls
>> "dumpbin.exe /?" in a execute_process call. Funny thing is, that if
>> configured from CMake-Gui or command line, the output is captured
>> just fine. However, if I then touch the CMakeLists.txt to force a
>> re-configure from within the IDE, the output is not captured
>> anymore. Further, not all executables seem to be affected. I tried
>> cl.exe (affected), find.exe (works fine) and a simple ANSI-C
>> hello-world program (works fine).
>> 
>> @David, @Brad, @MSVC-gurus: Do you have any idea what's going on?
> 
> The IDE sets an environment variable "VS_UNICODE_OUTPUT" to a value 
> that tells MS tools running from within the IDE where to send their 
> output:
> 
> http://msdn.microsoft.com/en-us/library/610ecb4h%28v=vs.80%29.aspx
> 
> In order to ensure that the tools send the output to their stdout 
> instead, one must unset this environment variable.  The
> ExternalProject module already does this when running some tools.
> 
> -Brad

Thanks for the hint. This works for me now:

install(CODE "
include(BundleUtilities)
set(ENV{VS_UNICODE_OUTPUT})   # <<<< SOMEHOW CREEPS BACK IN >>>>>>
fixup_bundle(\"${APP}\"  \"\"  \"${DIRS}\")
")


Michael



More information about the CMake mailing list