cmake(三十九)Cmake之execute_process指令

本文介绍了如何使用CMake的execute_process命令来执行一个或多个子进程,包括按指定顺序运行命令、处理输出和错误信息的方法。此外还讨论了与add_custom_command的区别,并提供了实际应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一    官网博客

用途:执行一个或多个'子进程'

场景:通过git命令'读取版本号',在代码中使用;列出某些'文件的名称'在代码中使用

1)  按指定的'先后顺序'运行一个或多个命令

特点:每个进程的输出通过管道连接'作为'下一个进程的输入

2)  所有的进程使用'单个的'标准错误输出管道

3)  如果指定了'WORKING_DIRECTORY',则'指定的目录'将作为'子进程'当前的'工作'目录

4)  如果指定了'TIMEOUT'值,则如果在指定的时间内(以秒为单位计算,允许有小数位)子进程执行仍未完成,则将会被中断

5)  如果指定了'RESULT_VARIABLE'变量,则'最后命令执行的结果'将'保存'在该变量中,它是'最后'一个子进程执行完后的'返回值'或描述某种'错误信息'的字符串

6)  如果指定了'OUTPUT'_VARIABLE或'ERROR'_VARIABLE变量,则该变量会'分别保存'标准输出和标准错误输出的内容

    备注:如果指定的变量是同一个,则输出会按'产生的先后顺序'保存在该变量中

7)  如果指定了INPUT_FILE、OUTPUT_FILE、ERROR_FILE等文件名,则它们会分别与'第一个'子进程的标准'输入','最后'一个子进程的标准'输出'以及'所有子进程'的标准'错误输出'相关联

8)  如果指定了OUTPUT_'QUIET'或ERROR_QUIET,则会'忽略'标准输出和错误输出

9) 如果在同一管道中'同时指定'了多个OUTPUT_*或ERROR_*选项,则优先级顺序是'未知'

   备注:应'避免'这种情况

10) 如果未指定任何OUTPUT_*或ERROR_*选项,则命令CMake所在进程'共享输出管道'

二    执行shell命令

++++++++++'(1)执行shell命令'++++++++++

execute_process(COMMAND echo "$ENV{PATH}" WORKING_DIRECTORY <这句shell命令执行的工作目录>)

备注:cmake里面是无法通过"${PATH}"形式获取环境变量

++++++++++'(2)执行shell脚本'++++++++++

execute_process(COMMAND sh ceshi.sh WORKING_DIRECTORY <ceshi.sh所在目录>)

备注:在调用一个execute_process时可以'顺序'执行'多条'COMMAND命令

补充:'python'或其它命令

三    区别

1) 在cmake中也可以通过'add_custom_comand'和'add_custom_target'执行shell命令,但是他们是一般执行命令'跟target'的生成有关

备注:make的'时候'才会执行

2) 'execute_process'只是简单地在cmake执行'编译之前调用shell命令'

备注:cmake的'时候'会执行

四    实践

git 的ssl'证书'问题

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值