How to execute a shell script using CMake post_build?

13,765

You are invoking CMake with it's command-line tool mode which doesn't execute generic scripts or commands.

Instead do e.g.

add_custom_command(TARGET abc
        POST_BUILD
        COMMAND /bin/sh /path/to/my_script
        )
Share:
13,765
sitilge
Author by

sitilge

Updated on June 05, 2022

Comments

  • sitilge
    sitilge almost 2 years

    How to execute a shell script using CMake? The command that should be run is my_script that should be executed after build. The CMakeLists.txt

    cmake_minimum_required(VERSION 3.0)
    
    project(abc)
    
    include_directories("/usr/lib/avr/include")
    
    set(CMAKE_CURRENT_SOURCE_DIR /home/user/Desktop)
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmcu=atmega8")
    set(SOURCE_FILES main.c)
    
    add_executable(abc ${SOURCE_FILES})
    
    #not working ----->
    add_custom_command(TARGET abc
            POST_BUILD
            COMMAND ${CMAKE_COMMAND} -E my_script
            )
    

    DISCLAIMER

    Yes, there are similar questions in SO here, here, here, etc; however, they don't give me a clear vision how this can be achieved.

  • sitilge
    sitilge about 8 years
    Elegant answer, just perfect :)
  • MattKelly
    MattKelly over 4 years
    Is there a way to use a relative, instead of an absolute path to the script?
  • Some programmer dude
    Some programmer dude over 4 years
    @MattKelly Of course, but the relatives paths will be from the build directory. Better use one of the CMake directory variables instead (like ${PROJECT_SOURCE_DIR} or similar).