cmake运行安装目标的脚本?

时间:2016-12-21 04:04:08

标签: cmake

我有一个项目,其中&#34;安装&#34;代码并不像复制一些文件那么简单。使用传统的Makefile,我只需要创建一个<script> var playing = true; var pauseButton = document.getElementById('pause'); var myIndex = 0; function carousel() { var i; var x = document.getElementsByClassName("Realisaties"); for (i = 0; i < x.length; i++) { x[i].style.display = "none"; } myIndex++; if (myIndex > x.length) { myIndex = 1 } x[myIndex - 1].style.display = "block"; } function pauseSlideshow(){ pauseButton.innerHTML = 'Play'; playing = false; clearInterval(slideInterval); } function playSlideshow(){ pauseButton.innerHTML = 'Pause'; playing = true; slideInterval = setInterval(carousel, 2000); } pauseButton.onclick = function(){ if(playing){ pauseSlideshow(); } else{ playSlideshow(); } }; carousel(); playSlideshow(); </script> 目标来运行一系列shell命令来完成我需要的工作。

但谷歌搜索导致没有这方面的例子(一些事情接近,但不完全......我认为)。所以基本上,我想要一个自定义命令,它取决于目标可执行文件,但不产生任何东西,并运行一个不需要可移植的脚本来完成&#34;安装&#34;

任何人都有这样的例子吗?

2 个答案:

答案 0 :(得分:12)

CMake的install命令允许自定义脚本。请参阅官方文档:install - Custom Installation Logic

install([[SCRIPT <file>] [CODE <code>]]
        [COMPONENT <component>] [...])
     

SCRIPT表单将在安装期间调用给定的CMake脚本文件。如果脚本文件名是相对路径,则将根据当前源目录解释它。 CODE表单将在安装期间调用给定的CMake代码。代码在双引号字符串中指定为单个参数。例如,代码

install(CODE "MESSAGE(\"Sample install message.\")")
     

将在安装过程中打印一条消息。

要运行自定义shell脚本(或任何程序),请将install(CODE ...)execute_process合并:

install(CODE "execute_process(COMMAND my_script.sh)")

答案 1 :(得分:-1)

这对我有用:使用add_custom_target,然后将主要目标作为依赖项添加到自定义目标目标。

# create custom target for setcap to be executed
add_custom_target(setcap ALL
    WORKING_DIRECTORY ${OUTPUT_DIR}/bin
    COMMAND ${CMAKE_COMMAND} -E 'sudo setcap cap_net_raw,cap_net_admin+eip ${}/bin/<executable name>)
# create a dependency for main target on the custom target
add_dependencies(setcap ${proj_name})