cmake:使⽤execute_process调⽤shell命令或脚本
CMake可以通过execute_process调⽤shell命令或者脚本,其原型如下:
execute_process(COMMAND <cmd1> []]
[COMMAND <cmd2> [] [...]]
[WORKING_DIRECTORY <directory>]
shell脚本返回执行结果[TIMEOUT <seconds>]
[RESULT_VARIABLE <variable>]
[OUTPUT_VARIABLE <variable>]
[ERROR_VARIABLE <variable>]
[INPUT_FILE <file>]
[OUTPUT_FILE <file>]
[ERROR_FILE <file>]
[OUTPUT_QUIET]
[ERROR_QUIET]
[OUTPUT_STRIP_TRAILING_WHITESPACE]
[ERROR_STRIP_TRAILING_WHITESPACE])
按指定的先后顺序运⾏⼀个或多个命令,每个进程的输出通过管道连接作为下⼀个进程的输⼊。所有的进程使⽤单个的标准错误输出管道。
如果指定了WORKING_DIRECTORY,则指定的⽬录将作为⼦进程当前的⼯作⽬录。
如果指定了TIMEOUT值,则如果在指定的时间内(以秒为单位计算,允许有⼩数位)⼦进程执⾏仍未完成,则将会被中断。
如果指定了RESULT_VARIABLE变量,则最后命令执⾏的结果将保存在该变量中,它是最后⼀个⼦进程执⾏完后的返回值或描述某种错误信息的字符串。
如果指定了OUTPUT_VARIABLE或ERROR_VARIABLE变量,则该变量会分别保存标准输出和标准错误输出的内容。
如果指定的变量是同⼀个,则输出会按产⽣的先后顺序保存在该变量中。
如果指定了INPUT_FILE,UTPUT_FILE或ERROR_FILE等⽂件名,则它们会分别与第⼀个⼦进程的标准输⼊,最后⼀个⼦进程的标准输出以及所有⼦进程的标准错误输出相关联。
如果指定了OUTPUT_QUIET或ERROR_QUIET,则会忽略标准输出和错误输出。如果在同⼀管道中同时指定了多个OUTPUT_*或ERROR_*选项,则优先级顺序是未知的(应避免这种情况)。
如果未指定任何OUTPUT_*或ERROR_*选项,则命令CMake所在进程共享输出管道。
例如:
1、执⾏shell命令
execute_process(COMMAND <⼀句shell命令> WORKING_DIRECTORY <;这句shell命令执⾏的⼯作⽬录>)
2、执⾏shell脚本
execute_process(COMMAND sh test.sh WORKING_DIRECTORY <test.sh所在⽬录>)
注:在调⽤⼀个execute_process时可以顺序执⾏多条COMMAND命令。
扩展:在cmake中也可以通过add_custom_comand 和 add_custom_target执⾏shell命令,但是他们是⼀般执⾏命令跟target的⽣成有关;⽽execute_process只是简单地在cmake执⾏编译之前调⽤shell命令,具体使⽤需要结合需求来选择!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。