INSTALL CODE Error Results and Termination

classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

INSTALL CODE Error Results and Termination

David Hauck
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
   )
   If (${_err})
      MESSAGE( FATAL_ERROR \"err: ${_err}\")
   endif ()")

Thanks!
-David


--

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
Reply | Threaded
Open this post in threaded view
|

Re: INSTALL CODE Error Results and Termination

Kornel Benko
Am Mittwoch, 13. November 2013 um 18:12:26, schrieb David Hauck <[hidden email]>

> 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?

>    )
>    If (${_err})
>       MESSAGE( FATAL_ERROR \"err: ${_err}\")
>    endif ()")
>
> Thanks!
> -David
>
        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

signature.asc (501 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: INSTALL CODE Error Results and Termination

David Hauck
Hi Kornel,
 
On Wednesday, November 13, 2013 10:26 AM, [hidden email] wrote:

> Am Mittwoch, 13. November 2013 um 18:12:26, schrieb David Hauck
> <[hidden email]>
>> 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?).

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}\")

BTW, the following doesn't work either (each of the variables is empty):

   install (CODE "EXECUTE_PROCESS (
      COMMAND ant ...
      WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/java
      OUTPUT_VARIABLE _out
      ERROR_VARIABLE _err
      RESULT_VARIABLE _res
   )
   Install (CODE "MESSAGE( STATUS \"out: ${_out}, err: ${_err}, res: ${_res}...\")")

-David

>>    )
>>    If (${_err})
>>       MESSAGE( FATAL_ERROR \"err: ${_err}\")
>>    endif ()")
>> Thanks!
>> -David
>>
> 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
Reply | Threaded
Open this post in threaded view
|

Re: INSTALL CODE Error Results and Termination

Jean-Christophe Fillion-Robin
Hi David,


You could look at the generated file named "cmake_install.cmake" to have a better idea of what could be wrong ...

As a side note, there is also an issue with command like "install(CODE|SCRIPT ..." there are always executed first in a given directory. See [1] (Note that I couldn't find a issue in the tracker referencing that problem ... will create one if no body find it)

Hth
Jc


On Wed, Nov 13, 2013 at 1:41 PM, David Hauck <[hidden email]> wrote:
Hi Kornel,

On Wednesday, November 13, 2013 10:26 AM, [hidden email] wrote:
> Am Mittwoch, 13. November 2013 um 18:12:26, schrieb David Hauck
> <[hidden email]>
>> 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?).

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}\")

BTW, the following doesn't work either (each of the variables is empty):

   install (CODE "EXECUTE_PROCESS (
      COMMAND ant ...
      WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/java
      OUTPUT_VARIABLE _out
      ERROR_VARIABLE _err
      RESULT_VARIABLE _res
   )
   Install (CODE "MESSAGE( STATUS \"out: ${_out}, err: ${_err}, res: ${_res}...\")")

-David

>>    )
>>    If (${_err})
>>       MESSAGE( FATAL_ERROR \"err: ${_err}\")
>>    endif ()")
>> Thanks!
>> -David
>>
>       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

--

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
Reply | Threaded
Open this post in threaded view
|

Re: INSTALL CODE Error Results and Termination

Kornel Benko
In reply to this post by David Hauck
Am Mittwoch, 13. November 2013 um 18:41:03, schrieb David Hauck <[hidden email]>

> Hi Kornel,
>  
> On Wednesday, November 13, 2013 10:26 AM, [hidden email] wrote:
> > Am Mittwoch, 13. November 2013 um 18:12:26, schrieb David Hauck
> > <[hidden email]>
> >> 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.

> 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?
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

signature.asc (501 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: INSTALL CODE Error Results and Termination

David Hauck
In reply to this post by Jean-Christophe Fillion-Robin
Hi Jean-christophe,
 
On [hidden email]], Jean-Christophe Fillion-Robin wrote:
> Hi David,
>
> You could look at the generated file named "cmake_install.cmake" to
> have a better idea of what could be wrong ...

Well, this just has the following:

IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified")
  EXECUTE_PROCESS (
      COMMAND ant ...
      WORKING_DIRECTORY /home/david/src/java
      #OUTPUT_VARIABLE _out
      ERROR_VARIABLE _err
      #RESULT_VARIABLE _res
   )
   MESSAGE( FATAL_ERROR "err: ")
ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified")

IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified")
  MESSAGE("out: , err: , res: ...")
ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified")

So it looks like the variable(s) is(are) being expanded (in the first case) prior to running the 'ant' command. Any ideas why this might be?

Thanks,
-David

PS: I'm surprised that this isn't something that many, many CMake authors need/require (i.e., the ability to terminate or otherwise operate on the results of an "install code..." sequence). Especially given the availability of the error, output, and result variable arguments to the execute_process command. What is the proper syntax/pattern for this?

> As a side note, there is also an issue with command like
> "install(CODE|SCRIPT ..." there are always executed first in a given
> directory. See [1] (Note that I couldn't find a issue in the tracker
> referencing that problem ... will create one if no body find it)
>
>
> Hth
> Jc
>
> [1]
> https://github.com/Slicer/Slicer/blob/95f48d89d0806cd30b0cf58b20b77901
> 63 cec1c8/CMake/SlicerCPack.cmake#L81-86
>
> On Wed, Nov 13, 2013 at 1:41 PM, David Hauck <[hidden email]>
> wrote:
> Hi Kornel,
>
> On Wednesday, November 13, 2013 10:26 AM, cmake- [hidden email]
> wrote: > Am Mittwoch, 13. November 2013 um 18:12:26, schrieb David
> Hauck > <[hidden email]> >> 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?).
>
> 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}\")
>
> BTW, the following doesn't work either (each of the variables is empty):
>
>   install (CODE "EXECUTE_PROCESS (
>      COMMAND ant ...
>      WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/java
>
>      OUTPUT_VARIABLE _out
>      ERROR_VARIABLE _err
>      RESULT_VARIABLE _res
>   )
>   Install (CODE "MESSAGE( STATUS \"out: ${_out}, err: ${_err},
> res: ${_res}...\")")
>
> -David
>
> >>    )
> >>    If (${_err})
> >>       MESSAGE( FATAL_ERROR \"err: ${_err}\")
> >>    endif ()")
> >> Thanks!
> >> -David
> >>
> >       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
Reply | Threaded
Open this post in threaded view
|

Re: INSTALL CODE Error Results and Termination

David Hauck
In reply to this post by Kornel Benko
Hi Kornel,

On Wednesday, November 13, 2013 11:08 AM, [hidden email] wrote:

> Am Mittwoch, 13. November 2013 um 18:41:03, schrieb David Hauck
> <[hidden email]>
>> Hi Kornel,
>>
>> On Wednesday, November 13, 2013 10:26 AM, cmake-
> [hidden email] wrote:
>>> Am Mittwoch, 13. November 2013 um 18:12:26, schrieb David Hauck
>>> <[hidden email]>
>>>> 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
Reply | Threaded
Open this post in threaded view
|

Re: INSTALL CODE Error Results and Termination

Jean-Christophe Fillion-Robin
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 <[hidden email]> wrote:
Hi Kornel,

On Wednesday, November 13, 2013 11:08 AM, [hidden email] wrote:
> Am Mittwoch, 13. November 2013 um 18:41:03, schrieb David Hauck
> <[hidden email]>
>> Hi Kornel,
>>
>> On Wednesday, November 13, 2013 10:26 AM, cmake-
> [hidden email] wrote:
>>> Am Mittwoch, 13. November 2013 um 18:12:26, schrieb David Hauck
>>> <[hidden email]>
>>>> 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



--
<a href="tel:%2B1%20919%20869%208849" value="+19198698849" target="_blank">+1 919 869 8849

--

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
Reply | Threaded
Open this post in threaded view
|

Re: INSTALL CODE Error Results and Termination

David Hauck
Hi Jean-christophe,
 
On [hidden email]], Jean-Christophe Fillion-Robin wrote:

> 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<----------

Aha! This was probably obvious to you and Kornel, but it "escaped" me ;). Brilliant, this is working fine now.

Thanks to both of you for your help,
-David
 

> Hth
> Jc
>
> On Wed, Nov 13, 2013 at 2:29 PM, David Hauck <[hidden email]>
> wrote:
> Hi Kornel,
>
> On Wednesday, November 13, 2013 11:08 AM, cmake- [hidden email]
> wrote: > Am Mittwoch, 13. November 2013 um 18:41:03, schrieb David
> Hauck > <[hidden email]> >> Hi Kornel, >> >> On Wednesday,
> November 13, 2013 10:26 AM, cmake- > [hidden email] wrote: >>> Am
> Mittwoch, 13. November 2013 um 18:12:26, schrieb David Hauck >>>
> <[hidden email]> >>>> 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
Reply | Threaded
Open this post in threaded view
|

Re: INSTALL CODE Error Results and Termination

David Hauck
In reply to this post by Jean-Christophe Fillion-Robin
On Wednesday, November 13, 2013 11:42 AM, David Hauck wrote:

> Hi Jean-christophe,
>
> On [hidden email]], Jean-Christophe Fillion-Robin wrote:
>> 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<----------
>
> Aha! This was probably obvious to you and Kornel, but it "escaped" me ;).
> Brilliant, this is working fine now.

One last item here: I'm now able to see the resulting variable values in the message command output, but I'd now like to enclose this in an 'if' command. Something like:

install(CODE "execute_process (
      COMMAND ${CMAKE_COMMAND} -E echo \"Hello\"
      OUTPUT_VARIABLE _out
      ERROR_VARIABLE _err
      RESULT_VARIABLE _res
      )"
   )
If (NOT \${_res} EQUAL "0") # escaping here has not effect one way or the other...
   install(CODE "message( FATAL_ERROR \"out: \${_out}, err: \${_err}, res: \${_res}\")")
endif ()
 
However, the resulting cmake_install.cmake has the following (meaning the fatal error message will always be executed regardless of the value of '_res"):

IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified")
  MESSAGE( FATAL_ERROR "out: ${_out}, err: ${_err}, res: ${_res}...")
ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified")

Is there a way to do this?

-David

> Thanks to both of you for your help,
> -David
>
>> Hth
>> Jc
>>
>> On Wed, Nov 13, 2013 at 2:29 PM, David Hauck <[hidden email]>
>> wrote:
>> Hi Kornel,
>>
>> On Wednesday, November 13, 2013 11:08 AM, cmake- [hidden email]
>> wrote: > Am Mittwoch, 13. November 2013 um 18:41:03, schrieb David
>> Hauck > <[hidden email]> >> Hi Kornel, >> >> On Wednesday,
>> November 13, 2013 10:26 AM, cmake- > [hidden email] wrote: >>> Am
>> Mittwoch, 13. November 2013 um 18:12:26, schrieb David Hauck >>>
>> <[hidden email]> >>>> 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
Reply | Threaded
Open this post in threaded view
|

Re: INSTALL CODE Error Results and Termination

Jean-Christophe Fillion-Robin
Hi,

You also need to add the "if" statement into the "CODE" parameter, for example something like this ...

install(CODE "If (NOT \${_res} EQUAL "0")
  message( FATAL_ERROR \"out: \${_out}, err: \${_err}, res: \${_res}\")
  endif()
")

To keep things simpler, you could also look at "INSTALL(SCRIPT ...)" it would allow you to avoid escaping. You would just need to configure the script using "configure_file".

Hth
Jc


On Wed, Nov 13, 2013 at 2:57 PM, David Hauck <[hidden email]> wrote:
On Wednesday, November 13, 2013 11:42 AM, David Hauck wrote:
> Hi Jean-christophe,
>
> On [hidden email]], Jean-Christophe Fillion-Robin wrote:
>> 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<----------
>
> Aha! This was probably obvious to you and Kornel, but it "escaped" me ;).
> Brilliant, this is working fine now.

One last item here: I'm now able to see the resulting variable values in the message command output, but I'd now like to enclose this in an 'if' command. Something like:

install(CODE "execute_process (
      COMMAND ${CMAKE_COMMAND} -E echo \"Hello\"
      OUTPUT_VARIABLE _out
      ERROR_VARIABLE _err
      RESULT_VARIABLE _res
      )"
   )
If (NOT \${_res} EQUAL "0") # escaping here has not effect one way or the other...
   install(CODE "message( FATAL_ERROR \"out: \${_out}, err: \${_err}, res: \${_res}\")")
endif ()

However, the resulting cmake_install.cmake has the following (meaning the fatal error message will always be executed regardless of the value of '_res"):

IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified")
  MESSAGE( FATAL_ERROR "out: ${_out}, err: ${_err}, res: ${_res}...")
ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified")

Is there a way to do this?

-David

> Thanks to both of you for your help,
> -David
>
>> Hth
>> Jc
>>
>> On Wed, Nov 13, 2013 at 2:29 PM, David Hauck <[hidden email]>
>> wrote:
>>      Hi Kornel,
>>
>>      On Wednesday, November 13, 2013 11:08 AM, cmake- [hidden email]
>> wrote:       > Am Mittwoch, 13. November 2013 um 18:41:03, schrieb David
>> Hauck        > <[hidden email]>       >> Hi Kornel,   >>      >> On Wednesday,
>> November 13, 2013 10:26 AM, cmake-   > [hidden email] wrote:      >>> Am
>> Mittwoch, 13. November 2013 um 18:12:26, schrieb David Hauck         >>>
>> <[hidden email]>      >>>> 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



--
+1 919 869 8849

--

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
Reply | Threaded
Open this post in threaded view
|

Re: INSTALL CODE Error Results and Termination

David Hauck
Hi Jean-christophe,
 
On [hidden email]], Jean-Christophe Fillion-Robin wrote:

> Hi,
>
> You also need to add the "if" statement into the "CODE" parameter, for
> example something like this ...
>
> install(CODE "If (NOT \${_res} EQUAL "0")
>   message( FATAL_ERROR \"out: \${_out}, err: \${_err}, res:
> \${_res}\")
>
>   endif()
> ")

Perfect, thx (just fixed up the double-quote escaping a bit and things worked fine).

> To keep things simpler, you could also look at "INSTALL(SCRIPT ...)"
> it would allow you to avoid escaping. You would just need to configure
> the script using "configure_file".

Hmmm, OK, I'll look into reviewing this to see how things differ.

Thanks,
-David
 

> Hth
> Jc
>
> On Wed, Nov 13, 2013 at 2:57 PM, David Hauck <[hidden email]>
> wrote:
> On Wednesday, November 13, 2013 11:42 AM, David Hauck wrote: > Hi
> Jean-christophe, > > On [hidden email]], Jean-Christophe
> Fillion-Robin wrote:
>
> >> 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<---------- >
>
> > Aha! This was probably obvious to you and Kornel, but it "escaped"
> me ;).
> > Brilliant, this is working fine now.
>
> One last item here: I'm now able to see the resulting variable values
> in the message command output, but I'd now like to enclose this in an 'if'
> command. Something like:
>
> install(CODE "execute_process (
>      COMMAND ${CMAKE_COMMAND} -E echo \"Hello\"
>      OUTPUT_VARIABLE _out
>      ERROR_VARIABLE _err
>      RESULT_VARIABLE _res
>      )"
>   )
>
> If (NOT \${_res} EQUAL "0") # escaping here has not effect one way or
> the other...
>   install(CODE "message( FATAL_ERROR \"out: \${_out}, err:
> \${_err}, res: \${_res}\")")
> endif ()
>
> However, the resulting cmake_install.cmake has the following (meaning
> the fatal error message will always be executed regardless of the
> value of '_res"):
>
> IF(NOT CMAKE_INSTALL_COMPONENT OR
> "${CMAKE_INSTALL_COMPONENT}"
> STREQUAL "Unspecified")
>
>  MESSAGE( FATAL_ERROR "out: ${_out}, err: ${_err}, res: ${_res}...")
>
> ENDIF(NOT CMAKE_INSTALL_COMPONENT OR
> "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Unspecified")
>
> Is there a way to do this?
>
> -David
>
> > Thanks to both of you for your help,
> > -David
> >
> >> Hth >> Jc >> >> On Wed, Nov 13, 2013 at 2:29 PM, David Hauck
> <[hidden email]> >> wrote: >>      Hi Kornel, >>
>
> >>      On Wednesday, November 13, 2013 11:08 AM, cmake-
> [hidden email] >> wrote:       > Am Mittwoch, 13. November 2013 um
> 18:41:03, schrieb David
>
> >> Hauck        > <[hidden email]>       >> Hi Kornel,
>>>>> On Wednesday,
> >> November 13, 2013 10:26 AM, cmake-   > [hidden email]
> wrote:      >>> Am
> >> Mittwoch, 13. November 2013 um 18:12:26, schrieb David Hauck
>>>>
> >> <[hidden email]>      >>>> 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