当前位置: 首页 > news >正文

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: 控制是否在执行命令时打印命令行。可选值为 SILENTNORMALDETAILED。默认为 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 中的强大功能,它可以帮助你在构建过程中灵活地执行外部命令并处理其输出。

http://www.lryc.cn/news/477579.html

相关文章:

  • 搜维尔科技:使用Sensglove Nova2触觉反馈手套遥操作机器人操作
  • 企业HR如何选对一款智能招聘软件?
  • 任务中心全新升级,新增分享接口文档功能,MeterSphere开源持续测试工具v3.4版本发布
  • 书生大模型第三关Git 基础知识
  • WordPress 中最佳的维护服务:入门级用户指南
  • 前端使用Luckysheet把返回的base64或二进制文件流格式,实现xlsx文件预览
  • 腾讯混元宣布大语言模型和3D模型正式开源
  • 提示工程指南 笔记
  • WordPress站点网站名称、logo设置
  • 本地缓存与 Redis:为什么我们仍然需要本地缓存?
  • 要在微信小程序中让一个 `view` 元素内部的文字水平垂直居中,可以使用 Flexbox 布局
  • 图像超分辨率、DPSRGAN
  • 124.WEB渗透测试-信息收集-ARL(15)
  • @Async注解提升Spring Boot项目中API接口并发能力
  • SpringBoot集成Flink-CDC
  • SQL报错注入检测方法与攻击方法
  • Linux内核编程(十九)SPI子系统的应用与驱动编写
  • MVC 文件夹结构详解
  • 远程操作Linux服务器 _Xshell、Xftp以及Linux常见操作命令
  • 单链表的实现(数据结构)
  • 印刷质量检测笔记
  • 16、论文阅读:Mamba YOLO:用于目标检测的基于 SSM 的 YOLO
  • python项目实战---使用图形化界面下载音乐
  • 无人机干扰与抗干扰,无人机与反制设备的矛与盾
  • JAVA基础:单元测试;注解;枚举;网络编程 (学习笔记)
  • Meta 上周宣布正式开源小型语言模型 MobileLLM 系列
  • 安全篇(1)判断安全固件
  • ArcGIS005:ArcMap常用操作101-150例动图演示
  • 如何用ChatGPT结合Python处理遥感数据
  • matlab 质心重合法实现点云配准