学习cmake-cookbook/chapter-03/recipe-03/cxx-example

1、在cmake中调用python命令的方法

如下所示,execute_process可以包含子定义的指令,详细参见execute_process — CMake 3.26.3 Documentation

# Find NumPy location
execute_process(
  COMMAND
    ${PYTHON_EXECUTABLE} "-c" "import re, numpy; print(re.compile('/__init__.py.*').sub('',numpy.__file__))"
  RESULT_VARIABLE _numpy_status
  OUTPUT_VARIABLE _numpy_location
  ERROR_QUIET
  OUTPUT_STRIP_TRAILING_WHITESPACE
  )
message(STATUS "RESULT_VARIABLE:${_numpy_status}")
message(STATUS "OUTPUT_VARIABLE:${_numpy_location}")

其中COMMAND后面跟随一条命令,与在cmd中输入命令是完全一样的,其中"-c"表示python可以按字符串方式接受一系列指令。

/usr/local/bin/python  "-c" "import re, numpy; print(re.compile('/__init__.py.*').sub('',numpy.__file__))"

execute_process执行的结果:

        RESULT_VARIABLE:变量将被设置为包含上一个子进程的结果。这将是最后一个子项的整数返回代码,或描述错误条件的字符串。

        OUTPUT_VARIABLEERROR_VARIABLE:变量名将分别使用标准输出和标准错误管道的内容设置。如果为两个管道命名了相同的变量,则它们的输出将按生成的顺序合并。

  然后OUTPUT_VARIABLE再赋值给_numpy_location变量,_numpy_location变量可以在execute_process外部访问。比如可以通过message打印出结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值