<div dir="ltr"><div><div>Hi, <br><br></div>You also need to add the &quot;if&quot; statement into the &quot;CODE&quot; parameter, for example something like this ... <br><br>install(CODE &quot;If (NOT \${_res} EQUAL &quot;0&quot;)<br>

  message( FATAL_ERROR \&quot;out: \${_out}, err: \${_err}, res: \${_res}\&quot;)<br></div>  endif()<br><div>&quot;)<br><br></div><div>To keep things simpler, you could also look at &quot;INSTALL(SCRIPT ...)&quot; it would allow you to avoid escaping. You would just need to configure the script using &quot;configure_file&quot;.<br>

<br>Hth<br>Jc<br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Nov 13, 2013 at 2:57 PM, David Hauck <span dir="ltr">&lt;<a href="mailto:davidh@netacquire.com" target="_blank">davidh@netacquire.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Wednesday, November 13, 2013 11:42 AM, David Hauck wrote:<br>
&gt; Hi Jean-christophe,<br>
&gt;<br>
&gt; On <a href="mailto:chris.fillionr@kitware.com">chris.fillionr@kitware.com</a>], Jean-Christophe Fillion-Robin wrote:<br>
</div><div class="im">&gt;&gt; Hi David,<br>
&gt;&gt;<br>
&gt;&gt; You need to escape the &quot;$&quot; sign otherwise the &quot;_err&quot;, &quot;_out&quot; and &quot;_res&quot;<br>
&gt;&gt; variables are resolved to an empty string.<br>
&gt;&gt;<br>
&gt;&gt; Here is an example of what you could do:<br>
&gt;&gt; -------------8&lt;-----------8&lt;----------<br>
&gt;&gt; cmake_minimum_required(VERSION 2.8.9)<br>
&gt;&gt;<br>
&gt;&gt; install(CODE &quot;execute_process (<br>
&gt;&gt;       COMMAND ${CMAKE_COMMAND} -E echo \&quot;Hello\&quot;<br>
&gt;&gt;       OUTPUT_VARIABLE _out<br>
&gt;&gt;       ERROR_VARIABLE _err<br>
&gt;&gt;       RESULT_VARIABLE _res<br>
&gt;&gt;       )&quot;<br>
&gt;&gt;    )<br>
&gt;&gt; install(CODE &quot;message( STATUS \&quot;out: \${_out}, err: \${_err}, res:<br>
&gt;&gt; \${_res}...\&quot;)&quot;) -------------8&lt;-----------8&lt;----------<br>
&gt;<br>
</div><div class="im">&gt; Aha! This was probably obvious to you and Kornel, but it &quot;escaped&quot; me ;).<br>
&gt; Brilliant, this is working fine now.<br>
<br>
</div>One last item here: I&#39;m now able to see the resulting variable values in the message command output, but I&#39;d now like to enclose this in an &#39;if&#39; command. Something like:<br>
<div class="im"><br>
install(CODE &quot;execute_process (<br>
      COMMAND ${CMAKE_COMMAND} -E echo \&quot;Hello\&quot;<br>
      OUTPUT_VARIABLE _out<br>
      ERROR_VARIABLE _err<br>
      RESULT_VARIABLE _res<br>
      )&quot;<br>
   )<br>
</div>If (NOT \${_res} EQUAL &quot;0&quot;) # escaping here has not effect one way or the other...<br>
   install(CODE &quot;message( FATAL_ERROR \&quot;out: \${_out}, err: \${_err}, res: \${_res}\&quot;)&quot;)<br>
endif ()<br>
<br>
However, the resulting cmake_install.cmake has the following (meaning the fatal error message will always be executed regardless of the value of &#39;_res&quot;):<br>
<div class="im"><br>
IF(NOT CMAKE_INSTALL_COMPONENT OR &quot;${CMAKE_INSTALL_COMPONENT}&quot; STREQUAL &quot;Unspecified&quot;)<br>
</div>  MESSAGE( FATAL_ERROR &quot;out: ${_out}, err: ${_err}, res: ${_res}...&quot;)<br>
<div class="im">ENDIF(NOT CMAKE_INSTALL_COMPONENT OR &quot;${CMAKE_INSTALL_COMPONENT}&quot; STREQUAL &quot;Unspecified&quot;)<br>
<br>
</div>Is there a way to do this?<br>
<br>
-David<br>
<div class="im"><br>
&gt; Thanks to both of you for your help,<br>
&gt; -David<br>
&gt;<br>
</div><div class="im">&gt;&gt; Hth<br>
&gt;&gt; Jc<br>
&gt;&gt;<br>
&gt;&gt; On Wed, Nov 13, 2013 at 2:29 PM, David Hauck &lt;<a href="mailto:davidh@netacquire.com">davidh@netacquire.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt;      Hi Kornel,<br>
&gt;&gt;<br>
</div>&gt;&gt;      On Wednesday, November 13, 2013 11:08 AM, cmake- <a href="mailto:bounces@cmake.org">bounces@cmake.org</a><br>
&gt;&gt; wrote:       &gt; Am Mittwoch, 13. November 2013 um 18:41:03, schrieb David<br>
<div class="HOEnZb"><div class="h5">&gt;&gt; Hauck        &gt; &lt;<a href="mailto:davidh@netacquire.com">davidh@netacquire.com</a>&gt;       &gt;&gt; Hi Kornel,   &gt;&gt;      &gt;&gt; On Wednesday,<br>
&gt;&gt; November 13, 2013 10:26 AM, cmake-   &gt; <a href="mailto:bounces@cmake.org">bounces@cmake.org</a> wrote:      &gt;&gt;&gt; Am<br>
&gt;&gt; Mittwoch, 13. November 2013 um 18:12:26, schrieb David Hauck         &gt;&gt;&gt;<br>
&gt;&gt; &lt;<a href="mailto:davidh@netacquire.com">davidh@netacquire.com</a>&gt;      &gt;&gt;&gt;&gt; Hello,     &gt;&gt;&gt;&gt;    &gt;&gt;&gt;&gt; I&#39;ve been using<br>
&gt;&gt; several &quot;install (CODE &quot;EXECUTE_PROCESS ...&quot;)&quot;       &gt;&gt;&gt;&gt; constructs         &gt;&gt;&gt; in<br>
&gt;&gt; my top-level CMakeLists.txt file. However, I&#39;ve been unable to       &gt;&gt;&gt;<br>
&gt;&gt; capture/operate on any exit status of the embedded command.  &gt;&gt;&gt;<br>
&gt;&gt; Unfortunately, documentation/searches haven&#39;t turned up any useful   &gt;&gt;&gt;<br>
&gt;&gt; pointers. The closest I&#39;ve come is a pointer in the following thread:<br>
&gt;&gt;      &gt;&gt;&gt;&gt; <a href="http://www.cmake.org/pipermail/cmake/2011-" target="_blank">http://www.cmake.org/pipermail/cmake/2011-</a> July/045475.html<br>
&gt;&gt; However,     &gt;&gt;&gt;&gt; I&#39;ve not been able to sufficiently read between the<br>
&gt;&gt; lines to get         &gt;&gt;&gt;&gt; this working.      &gt;&gt;&gt;&gt;    &gt;&gt;&gt;&gt; Does anyone have any<br>
&gt;&gt; thoughts on how to get something like the    &gt;&gt;&gt;&gt; following working:<br>
&gt;&gt;      &gt;&gt;&gt;&gt;    &gt;&gt;&gt;&gt; install (CODE &quot;EXECUTE_PROCESS (   &gt;&gt;&gt;&gt;       COMMAND ant<br>
&gt;&gt; ...  &gt;&gt;&gt;&gt; WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/java       &gt;&gt;&gt;&gt;<br>
&gt;&gt; ERROR_VARIABLE _err  &gt;&gt;&gt;     &gt;&gt;&gt; Didn&#39;t you mean &#39;RESULT_VARIABLE&#39; here?<br>
&gt;&gt;      &gt;&gt;      &gt;&gt; No, I really do mean ERROR_VARIABLE (unless, of course, this<br>
&gt;&gt; variable     &gt;&gt; does         &gt; not include the non-zero exit status of the<br>
&gt;&gt; EXECUTE_PROCESS command?).   &gt;       &gt; If you run &#39;cmake --help-command<br>
&gt;&gt; execute_process&#39;, you see: ... If    &gt; RESULT_VARIABLE is given the<br>
&gt;&gt; variable will be set to contain the  &gt; result of running the processes.<br>
&gt;&gt;  This will be an integer return code         &gt; from the last child or a string<br>
&gt;&gt; describing an error condition. ... So,       &gt; if this is not &quot;0&quot;, then you<br>
&gt;&gt; have an error condition.<br>
&gt;&gt;<br>
&gt;&gt;      Yes, I see this. I also assumed that the ERROR_VARIABLE would be<br>
&gt;&gt; returning non-zero text as well in this case. I will change to using<br>
&gt;&gt; RESULT_VARIABLE, but, in both cases, it seems that I&#39;m referencing<br>
&gt;&gt; the variable incorrectly (either syntactically or in the incorrect<br>
&gt;&gt; context) since this/these is/are always &lt;empty&gt;.<br>
&gt;&gt;<br>
&gt;&gt;      &gt;&gt; BTW, I&#39;m still curious about the (dual &#39;code&#39;) construct generally.<br>
&gt;&gt;      &gt;&gt; Specifically, if I do the following I never see the fatal error      &gt;&gt;<br>
&gt;&gt; message (so I&#39;m wondering if there&#39;s still something wrong regarding<br>
&gt;&gt;      &gt;&gt; the scoping of the message command)?         &gt;&gt;      &gt;&gt;    install (CODE<br>
&gt;&gt; &quot;EXECUTE_PROCESS (   &gt;&gt;       COMMAND ant ...        &gt;&gt; WORKING_DIRECTORY<br>
&gt;&gt; ${PROJECT_SOURCE_DIR}/java   &gt;&gt;       ERROR_VARIABLE _err    &gt;&gt;    )         &gt;&gt;<br>
&gt;&gt; MESSAGE( FATAL_ERROR \&quot;err: ${_err}\&quot;)       &gt;       &gt; Never did this. When do<br>
&gt;&gt; you want to see the message?<br>
&gt;&gt;<br>
&gt;&gt;      Ideally, I want to be able to test for the result of this variable<br>
&gt;&gt; (either ERROR_VARIABLE or RESULT_VARIABLE) after the execute_process<br>
&gt;&gt; command completes (during &#39;make install&#39;) to determine its result<br>
&gt;&gt; and to terminate (with error message) when the command fails.<br>
&gt;&gt;<br>
&gt;&gt;      Thanks,<br>
&gt;&gt;      -David<br>
&gt;&gt;<br>
&gt;&gt;      &gt; As I understand your code, only in call of cmake, e.g. at<br>
&gt;&gt; configuration time.<br>
&gt;&gt;      &gt;<br>
&gt;&gt;      &gt;       Kornel<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>+1 919 869 8849<br>
</div>