CMake 执行进程
在 CMake 中 execute_process 函数可以执行系统命令。例如:
execute_process(
COMMAND echo Hello
)COMMAND 接受的参数是一个 list,所以不要用双引号包裹。
execute_process 也支持运行多条命令,例如:
execute_process(
COMMAND echo Hello
COMMAND echo World
COMMAND echo Wow
)仔细观察 CMake 的输出,会发现只输出了 Wow ,这是因为多个 COMMAND 之间是通过管道连接的。前一个 COMMAND 的输出会作为给下一个 COMMAND 的输入。例如下面的代码:
execute_process(
COMMAND echo Hello World
COMMAND tee out1.txt
COMMAND tee out2.txt
)运行上面的 CMake 的脚本代码,我们能在命令行输出中看到 Hello World ,同时,在生成的 out1.txt 和 out2.txt 文件中也能看到同样的内容。
不过,execute_process 的 COMMAND 不支持类似于 && 、|| 、> 等 Shell 运算符。因为 COMMAND 参数会以 argv 的形式传递给 exec 系统调用,来直接执行程序,并不是在 Shell 中运行程序。
其他的 execute_process 详细用法参见:execute_process — CMake Documentation