如何用shell命令的结果初始化一个CMakevariables

有一种方法可以将CMake脚本中的variables设置为shell命令的输出吗? 会想到像SET(FOO COMMAND "echo bar")东西

你需要execute_process命令。

在你的情况下,在Windows上:

 execute_process(COMMAND CMD /c echo bar OUTPUT_VARIABLE FOO) 

或在Linux上,只需:

 execute_process(COMMAND echo bar OUTPUT_VARIABLE FOO) 

在这种情况下,CMake提供了一个跨平台的解决scheme。 CMake本身可以用来运行可以在所有系统上使用的命令,其中之一就是echo 。 为此,CMake应该通过命令行arg -E 。 有关这些命令的完整列表,请运行cmake -E help

在CMake脚本中,CMake可执行文件被引用${CMAKE_COMMAND} ,所以脚本需要做:

 execute_process(COMMAND ${CMAKE_COMMAND} -E echo bar OUTPUT_VARIABLE FOO)