[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