cmake中execute_process详解
execute_process
是 CMake 中一个非常强大的命令,用于在构建过程中执行外部程序或脚本。它提供了丰富的选项来控制执行过程,并可以捕获输出、错误和返回码。以下是 execute_process
的详细解析:
基本语法
execute_process(COMMAND <command>...>[WORKING_DIRECTORY <directory>][TIMEOUT <seconds>][COMMAND_ECHO <SILENT|NORMAL|DETAILED>][RESULT_VARIABLE <variable>][ERROR_VARIABLE <variable>][ERROR_STRIP_TRAILING_WHITESPACE][ERROR_CODE <variable>][ERROR_CODE_VARIABLE <variable>][ERROR_FILE <file>][ERROR_FILE_STRIP_TRAILING_WHITESPACE][OUTPUT_VARIABLE <variable>][OUTPUT_STRIP_TRAILING_WHITESPACE][OUTPUT_FILE <file>][OUTPUT_FILE_STRIP_TRAILING_WHITESPACE][INPUT <string|list>][INPUT_DATA <string|list>]
)
参数详解
- COMMAND: 要执行的命令及其参数。可以是一个字符串或列表形式。例如:
COMMAND make install
或COMMAND {CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake_install.cmake
。 - WORKING_DIRECTORY: 设置命令执行时的工作目录。例如:
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
。 - TIMEOUT: 设置命令执行的超时时间(以秒为单位)。如果命令在指定时间内未完成,则会被终止。例如:
TIMEOUT 60
。 - COMMAND_ECHO: 控制是否在执行命令时打印命令行。可选值为
SILENT
,NORMAL
,DETAILED
。默认为NORMAL
。SILENT
: 不打印任何信息。NORMAL
: 打印命令名称和第一个参数。DETAILED
: 打印完整的命令行。
- RESULT_VARIABLE: 存储命令执行结果的变量。如果命令成功执行,该变量将被设置为
TRUE
;否则为FALSE
。 - ERROR_VARIABLE: 存储命令标准错误输出的变量。可以与
ERROR_STRIP_TRAILING_WHITESPACE
一起使用来去除末尾的空白字符。 - ERROR_STRIP_TRAILING_WHITESPACE: 如果设置了此选项,将从
ERROR_VARIABLE
中去除末尾的空白字符。 - ERROR_CODE: 存储命令返回码的变量。如果命令成功执行,该变量将被设置为
0
;否则为非零值。 - ERROR_CODE_VARIABLE: 存储命令返回码的变量名。
- ERROR_FILE: 将命令的标准错误输出重定向到指定的文件。可以与
ERROR_FILE_STRIP_TRAILING_WHITESPACE
一起使用来去除末尾的空白字符。 - ERROR_FILE_STRIP_TRAILING_WHITESPACE: 如果设置了此选项,将从
ERROR_FILE
中去除末尾的空白字符。 - OUTPUT_VARIABLE: 存储命令标准输出的变量。可以与
OUTPUT_STRIP_TRAILING_WHITESPACE
一起使用来去除末尾的空白字符。 - OUTPUT_STRIP_TRAILING_WHITESPACE: 如果设置了此选项,将从
OUTPUT_VARIABLE
中去除末尾的空白字符。 - OUTPUT_FILE: 将命令的标准输出重定向到指定的文件。可以与
OUTPUT_FILE_STRIP_TRAILING_WHITESPACE
一起使用来去除末尾的空白字符。 - OUTPUT_FILE_STRIP_TRAILING_WHITESPACE: 如果设置了此选项,将从
OUTPUT_FILE
中去除末尾的空白字符。 - INPUT: 向命令的标准输入提供数据。可以是字符串或列表形式。
- INPUT_DATA: 类似于
INPUT
,但允许使用更复杂的数据类型,例如列表。
示例
-
简单示例:
execute_process(COMMAND echo "Hello, World!"OUTPUT_VARIABLE output
)
message("Output: ${output}")
-
带工作目录和超时:
execute_process(COMMAND ls /nonexistent/pathWORKING_DIRECTORY ${CMAKE_SOURCE_DIR}TIMEOUT 5RESULT_VARIABLE result
)
if (result)message("Command succeeded")
else()message("Command failed or timed out")
endif()
- 捕获标准输出和错误输出:
execute_process(COMMAND ls /nonexistent/pathOUTPUT_VARIABLE outputERROR_VARIABLE error
)
message("Output: ${output}")
message("Error: ${error}")
- 重定向输出到文件:
execute_process(COMMAND ls /nonexistent/pathOUTPUT_FILE ${CMAKE_BINARY_DIR}/output.txtERROR_FILE ${CMAKE_BINARY_DIR}/error.txt
)
通过这些参数和示例,你可以看到 execute_process
命令在 CMake 中的强大功能,它可以帮助你在构建过程中灵活地执行外部命令并处理其输出。
相关文章:

cmake中execute_process详解
execute_process 是 CMake 中一个非常强大的命令,用于在构建过程中执行外部程序或脚本。它提供了丰富的选项来控制执行过程,并可以捕获输出、错误和返回码。以下是 execute_process 的详细解析: 基本语法 execute_process(COMMAND <comm…...

搜维尔科技:使用Sensglove Nova2触觉反馈手套遥操作机器人操作
使用Sensglove Nova2触觉反馈手套遥操作机器人操作 搜维尔科技:使用Sensglove Nova2触觉反馈手套遥操作机器人操作...

企业HR如何选对一款智能招聘软件?
随着招聘市场的竞争加剧和求职者期望的提升,传统的招聘方式已经难以满足企业的需求。智能招聘软件应运而生,成为企业HR提升招聘效率、优化招聘流程、增强雇主品牌吸引力的关键工具。然而,市场上的智能招聘软件琳琅满目,如何选择一…...

任务中心全新升级,新增分享接口文档功能,MeterSphere开源持续测试工具v3.4版本发布
2024年11月5日,MeterSphere开源持续测试工具正式发布v3.4版本。 在这一版本中,系统设置方面,任务中心支持实时查看系统即时任务与系统后台任务;接口测试方面,新增接口文档分享功能、接口场景导入导出功能,…...

书生大模型第三关Git 基础知识
关卡编号:L0G3000 任务一 破冰行动 fork仓库,注意这里不要勾选Copy branch Only!!!,因为后面课程中会使用到class分支: 克隆仓库: 移动分支: 创建自己的分支: 创建id.md文档,…...

WordPress 中最佳的维护服务:入门级用户指南
如果你是WordPress网站管理员,一定知道网站维护既耗时又复杂。然而,保持网站的正常运行和安全却至关重要。为了让你轻松应对这个挑战,我们总结了一些适合新手和小型网站的维护服务。本文将介绍两款适合初学者的维护服务:FixMySite…...

前端使用Luckysheet把返回的base64或二进制文件流格式,实现xlsx文件预览
xlsx文件预览 Luckysheet是什么?代码实现xlsx文件预览引入luckysheet的相关依赖安装luckyexcel指定一个表格容器实现逻辑 Luckysheet是什么? Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。 Luckys…...

腾讯混元宣布大语言模型和3D模型正式开源
腾讯混元大模型正在加快开源步伐。 11月5日,腾讯混元宣布最新的MoE模型“混元Large“以及混元3D生成大模型“ Hunyuan3D-1.0”正式开源,支持企业及开发者精调、部署等不同场景的使用需求,可在HuggingFace、Github等技术社区直接下载ÿ…...

提示工程指南 笔记
诸神缄默不语-个人CSDN博文目录 课程网站:提示工程指南 | Prompt Engineering Guide 原版是英文:https://www.promptingguide.ai/ 特别基础的内容我就不写了,只写一些值得记录的内容。 文章目录 1. 常用术语(LLM特供版ÿ…...

WordPress站点网站名称、logo设置
WordPress网站名称设置 后台打开查看站点自定义设置 点击网站名称修改 上传logo和站点图标...

本地缓存与 Redis:为什么我们仍然需要本地缓存?
文章目录 本地缓存与 Redis:为何仍需本地缓存?为什么需要本地缓存?多级缓存架构多级缓存的实现 本地缓存的实现方式使用 cachetools 实现 LRUCache使用 diskcache 实现持久化缓存 缓存装饰器实现进一步优化:缓存失效与更新 小结 好…...

要在微信小程序中让一个 `view` 元素内部的文字水平垂直居中,可以使用 Flexbox 布局
文章目录 主要特点:基本用法:常用属性: 要在微信小程序中让一个 view 元素内部的文字水平垂直居中,可以使用 Flexbox 布局。以下是如何设置样式的示例: .scan-button {display: flex; /* 启用 Flexbox 布局 */justify…...

图像超分辨率、DPSRGAN
图像超分辨率(Image Super-Resolution, ISR)是一种通过增加图像的分辨率来提高其细节和清晰度的技术。这项技术在多个领域都有广泛的应用,比如视频监控、医学诊断、遥感应用等。根据搜索结果,图像超分辨率算法主要可以分为以下几类…...

124.WEB渗透测试-信息收集-ARL(15)
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:123.WEB渗透测试-信息收集-ARL(14) 点击fofa任务下发(…...

@Async注解提升Spring Boot项目中API接口并发能力
文章目录 同步调用异步调用1: 启用异步支持2: 修改 Task 类异步回调基本概念使用 Future<String>使用 CompletableFuture<String>Future<String> 和 CompletableFuture<String>区别1. 基本概念2. 主要区别同步调用 同步调用是最直接的调用方式,调用方…...

SpringBoot集成Flink-CDC
Flink CDC CDC相关介绍 CDC是什么? CDC是Change Data Capture(变更数据获取)的简称。核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到MQ以…...

SQL报错注入检测方法与攻击方法
报错注入 即是注入检测方法,又是注入读取数据的方法 攻击者在判断一个参数是否存在SQL注入漏洞时,会拼接单引号,反斜杠字符,如果显示语法报错,证明这个位置具有SQL注入漏洞,也可以通过整数溢出来判断&…...

Linux内核编程(十九)SPI子系统的应用与驱动编写
本文目录 一、 SPI驱动框架图二、编写SPI驱动device框架三、编写SPI驱动driver框架四、实验一编写mcp2515驱动1. 注册字符设备或杂项设备框架2. SPI写数据3. SPI读寄存器数据 4. MCP2515相关配置 对于SPI基础知识这里不做过多讲解,详情查看:SPI基础知识实…...

MVC 文件夹结构详解
MVC 文件夹结构详解 MVC(Model-View-Controller)是一种广泛应用于软件开发中的设计模式,它通过将应用程序分为三个核心组件——模型(Model)、视图(View)和控制器(Controller)——来组织代码,提高代码的可维护性和可扩展性。在MVC模式中,每个组件都有其特定的职责,…...

远程操作Linux服务器 _Xshell、Xftp以及Linux常见操作命令
工具推荐 Xshell和Xftp是两款由NetSarang公司开发的、广受欢迎的软件工具,它们分别专注于终端模拟和文件传输,为用户提供了便捷的操作和强大的功能。以下是对这两款软件的详细解析: 一、Xshell 定义与功能 Xshell是一个强大的安全终端模拟软…...

单链表的实现(数据结构)
一. 单链表的实现 我们在上一篇中简单的认识了链表的组成和结构,并打印出链表,那么今天就来具体实现一下单链表对于数据增加、删减、插入等。 接下来就是我们在链表中对于数据的增、删、插的实现,对于我们的链表来说在任何地方增加数据都需…...

印刷质量检测笔记
一、印刷质量检测的背景与挑战 印刷品的质量检测,特别是针对高精度要求的印刷产品,如包装材料、标签、书籍封面等,一直是制造业中的一个关键环节。印刷品可能存在的质量问题多种多样,包括但不限于颜色偏差、文字模糊、漏印、多印…...

16、论文阅读:Mamba YOLO:用于目标检测的基于 SSM 的 YOLO
Mamba YOLO: SSMs-Based YOLO For Object Detection 总结前言感受野为什么Transformer 的结构被引入,显著扩展了模型的感受野?状态空间模型SSM 介绍相关工作实时目标检测端到端目标检测器视觉状态空间模型 方法预处理整体架构ODSS BlockLocalSpatial Blo…...

python项目实战---使用图形化界面下载音乐
音乐下载 设计思路: 设计界面编写爬虫代码绑定爬虫打包exe文件 这个是最终的设计成果,所有的下载歌曲都在“下载mp3”文件夹里面 完整代码 逻辑代码 import os.path import reimport requests from PyQt5.QtWidgets import QApplication,QWidget,QM…...

无人机干扰与抗干扰,无人机与反制设备的矛与盾
无人机干扰与抗干扰,以及无人机与反制设备之间的关系,可以形象地比喻为矛与盾的较量。以下是对这两方面的详细探讨: 一、无人机干扰与抗干扰 1. 无人机干扰技术 无人机干扰技术是指通过各种手段对无人机系统进行干扰,使其失去正…...

JAVA基础:单元测试;注解;枚举;网络编程 (学习笔记)
单元测试 操作步骤: a.导包import org.junit; b.三个注解 Test Before After c.点击Test 运行就可以了 用在不需要控制台输入的情境下:javaweb,框架项目,微服务项目 供开发人员自己做测试。 package com.page…...

Meta 上周宣布正式开源小型语言模型 MobileLLM 系列
在 7 月发布之后,Meta 上周宣布正式开源能够在智能手机上运行的小型语言模型 MobileLLM 系列。 Meta 在四个月前发布了这两个参数量小于 10 亿的语言模型 MobileLLM 125M 及 MobileLLM 350M。如今,Meta 又开发出了更大参数量的模型版本,包括…...

安全篇(1)判断安全固件
判断安全固件的方法 一、通过串口开机打印 改方法适用Android与Tina 1.开机打印为SBOOT为安全 [289]HELLO! SBOOT is starting! 2.开机打印boot0为非安全 [88]BOOT0 commit : 1cbb5ea8b3 二、通过读数据 1.getprop | grep verifiedbootstate 这条命令的输出表示设备的…...

ArcGIS005:ArcMap常用操作101-150例动图演示
摘要:本文涵盖了GIS软件操作的多方面内容,包括地图文档的新建、打开、保存及版本兼容性处理;错误与警告的查阅及帮助文档的使用技巧;地图打印比例尺的调整与地图信息的完善;图层操作的撤销与恢复,界面元素的…...

如何用ChatGPT结合Python处理遥感数据
在科技飞速发展的时代,遥感数据的精准分析已经成为推动各行业智能决策的关键工具。从无人机监测农田到卫星数据支持气候研究,空天地遥感数据正以前所未有的方式为科研和商业带来深刻变革。然而,对于许多专业人士而言,如何高效地处…...