[CMake] Problems with execute_process under Windows
Eric Noulard
eric.noulard at gmail.com
Sun May 10 13:19:01 EDT 2009
2009/5/10 Eric Noulard <eric.noulard at gmail.com>:
> 2009/5/10 Tanguy Krotoff <tkrotoff at gmail.com>:
>> Hello
>>
>> I'm pulling my hair out on what should be straightforward.
>>
>> file(TO_NATIVE_PATH ${file} file_native)
>> execute_process(
>> COMMAND type \"${file_native}\"
>> RESULT_VARIABLE result
>> OUTPUT_VARIABLE output
>> ERROR_VARIABLE error
>> )
>> message("result=${result}")
>> message("output=${output}")
>> message("error=${error}")
>>
>> I'm running this under Windows and it gave me this output:
>>
>> result=0
>> output=
>> error="C:\Documents and
>> Settings\tanguy_k\Desktop\phonon-vlc-mplayer\trunk\AUTHORS" not found
>>
>> Of course the file exist and if i enter
>> type "C:\Documents and
>> Settings\tanguy_k\Desktop\phonon-vlc-mplayer\trunk\AUTHORS"
>> inside a DOS command prompt everything works fine.
>>
>> It's like CMake does something to the filename that I don't understand
>
> I do have weird behavior on Unix too,
> with filename with embbeded "space" in them.
>
> It looks like I must NOT TO_NATIVE_PATH for make it work?
>
> My unix example is attached.
> try:
> cmake -P buggy_execute.cmake
>
>> Any idea why?
>
> Nope.
> Looks like there is trouble with escaped character.
On linux with CMake 2.6.4, execute_process seems to automatically escape
character... (at least space or '\')
strace-ing my previous example gives:
execve("/usr/local/bin/dir", ["dir", "/home/eric/with\\ space\\ in\\
it.txt ....)
--
Erk
More information about the CMake
mailing list