[CMake] INSTALL CODE Error Results and Termination

Jean-Christophe Fillion-Robin jchris.fillionr at kitware.com
Wed Nov 13 14:35:34 EST 2013


Hi David,

You need to escape the "$" sign otherwise the "_err", "_out" and "_res"
variables are resolved to an empty string.

Here is an example of what you could do:

-------------8<-----------8<----------
cmake_minimum_required(VERSION 2.8.9)

install(CODE "execute_process (
      COMMAND ${CMAKE_COMMAND} -E echo \"Hello\"
      OUTPUT_VARIABLE _out
      ERROR_VARIABLE _err
      RESULT_VARIABLE _res
      )"
   )
install(CODE "message( STATUS \"out: \${_out}, err: \${_err}, res:
\${_res}...\")")
-------------8<-----------8<----------

Hth
Jc


On Wed, Nov 13, 2013 at 2:29 PM, David Hauck <davidh at netacquire.com> wrote:

> Hi Kornel,
>
> On Wednesday, November 13, 2013 11:08 AM, cmake-bounces at cmake.org wrote:
> > Am Mittwoch, 13. November 2013 um 18:41:03, schrieb David Hauck
> > <davidh at netacquire.com>
> >> Hi Kornel,
> >>
> >> On Wednesday, November 13, 2013 10:26 AM, cmake-
> > bounces at cmake.org wrote:
> >>> Am Mittwoch, 13. November 2013 um 18:12:26, schrieb David Hauck
> >>> <davidh at netacquire.com>
> >>>> Hello,
> >>>>
> >>>> I've been using several "install (CODE "EXECUTE_PROCESS ...")"
> >>>> constructs
> >>> in my top-level CMakeLists.txt file. However, I've been unable to
> >>> capture/operate on any exit status of the embedded command.
> >>> Unfortunately, documentation/searches haven't turned up any useful
> >>> pointers. The closest I've come is a pointer in the following thread:
> >>>> http://www.cmake.org/pipermail/cmake/2011-July/045475.html However,
> >>>> I've not been able to sufficiently read between the lines to get
> >>>> this working.
> >>>>
> >>>> Does anyone have any thoughts on how to get something like the
> >>>> following working:
> >>>>
> >>>>    install (CODE "EXECUTE_PROCESS (
> >>>>       COMMAND ant ...
> >>>>       WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/java
> >>>>       ERROR_VARIABLE _err
> >>>
> >>> Didn't you mean 'RESULT_VARIABLE' here?
> >>
> >> No, I really do mean ERROR_VARIABLE (unless, of course, this variable
> >> does
> > not include the non-zero exit status of the EXECUTE_PROCESS command?).
> >
> > If you run 'cmake --help-command execute_process', you see: ... If
> > RESULT_VARIABLE is given the variable will be set to contain the
> > result of running the processes.  This will be an integer return code
> > from the last child or a string describing an error condition. ... So,
> > if this is not "0", then you have an error condition.
>
> Yes, I see this. I also assumed that the ERROR_VARIABLE would be returning
> non-zero text as well in this case. I will change to using RESULT_VARIABLE,
> but, in both cases, it seems that I'm referencing the variable incorrectly
> (either syntactically or in the incorrect context) since this/these is/are
> always <empty>.
>
> >> BTW, I'm still curious about the (dual 'code') construct generally.
> >> Specifically, if I do the following I never see the fatal error
> >> message (so I'm wondering if there's still something wrong regarding
> >> the scoping of the message command)?
> >>
> >>    install (CODE "EXECUTE_PROCESS (
> >>       COMMAND ant ...
> >>       WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/java
> >>       ERROR_VARIABLE _err
> >>    )
> >>    MESSAGE( FATAL_ERROR \"err: ${_err}\")
> >
> > Never did this. When do you want to see the message?
>
> Ideally, I want to be able to test for the result of this variable (either
> ERROR_VARIABLE or RESULT_VARIABLE) after the execute_process command
> completes (during 'make install') to determine its result and to terminate
> (with error message) when the command fails.
>
> Thanks,
> -David
>
> > As I understand your code, only in call of cmake, e.g. at configuration
> time.
> >
> >       Kornel
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more
> information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake
>



-- 
+1 919 869 8849
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20131113/5e7450a5/attachment-0001.htm>


More information about the CMake mailing list