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_VARIABLE
, ERROR_VARIABLE:变量名将分别使用标准输出和标准错误管道的内容设置。如果为两个管道命名了相同的变量,则它们的输出将按生成的顺序合并。
然后
OUTPUT_VARIABLE再赋值给_numpy_location变量,_numpy_location变量可以在execute_process外部访问。比如可以通过message打印出结果。