我有一个项目,其中&#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;
任何人都有这样的例子吗?
答案 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})