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是一个强大的安全终端模拟软…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
