Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用CMake post_build执行shell脚本?_C_Linux_Cmake - Fatal编程技术网

如何使用CMake post_build执行shell脚本?

如何使用CMake post_build执行shell脚本?,c,linux,cmake,C,Linux,Cmake,如何使用CMake执行shell脚本?应该运行的命令是my_script,应该在生成后执行。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=at

如何使用CMake执行shell脚本?应该运行的命令是
my_script
,应该在生成后执行。
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
        )
免责声明


是的,SO、等中也有类似的问题;然而,他们并没有给我一个清晰的愿景如何实现这一点。

您正在使用它调用CMake,它不执行通用脚本或命令

相反,你可以做

add_custom_command(TARGET abc
        POST_BUILD
        COMMAND /bin/sh /path/to/my_script
        )

优雅的回答,恰到好处:)有没有办法使用相对路径而不是脚本的绝对路径?@MattKelly当然,但是相对路径将来自构建目录。最好使用一个CMake目录变量(如
${PROJECT\u SOURCE\u DIR}
或类似变量)。