[CMake] Delivery target

Michael Wild themiwi at gmail.com
Wed Jan 5 08:45:31 EST 2011


On 01/05/2011 02:13 PM, Reinhard Thies wrote:
> On Wednesday 05 January 2011 12:32:52 David Cole wrote:
>> You can't depend on "package", but you can do this as your custom
>> target's command:
>>
>>   cmake --build . --target package --config Release
>>   scp ...
>>
> that the way I have it 
> ADD_CUSTOM_TARGET(delivery                                                                                     
>         rm -rf ${CMAKE_PROJECT_NAME}*.tar.gz                                                                   
>         COMMAND make package                                                                                   
>         COMMAND scp ${CMAKE_PROJECT_NAME}*.tar.gz ds:/srv/repos/bin                     
> )                                                                                                              
> 
> I just thought there might be a better way.
> 
> thx,
> Reinhard

If you *know* that you *always*

- have a POSIX shell
- use a Makefile generator
- have scp installed on host and target machine

then things are fine, otherwise this will fail. If you used

find_program(SCP_EXECUTABLE scp)
if(SCP_EXECUTABLE)
add_custom_target(delivery
  COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_PROJECT_NAME}*.tar.gz
  COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}
                           --target package
                           --config Release
  COMMAND ${SCP_EXECUTABLE} ${CMAKE_PROJECT_NAME}*.tar.gz
                            ds:/srv/repos/bin)
else()
  message(SEND_ERROR "Require scp for the delivery target")
endif()

you at least wouldn't require a POSIX shell, don't have to care about
the build system and check that you actually have scp.

HTH

Michael


More information about the CMake mailing list