我无法理解CMake。我想要做的是在构建过程中执行以下bash命令:
date +"%F %T" > timestamp
这将获取当前日期并将其写入文件。但是,我似乎无法使用CMake命令重现这个简单的操作。
以下是我尝试过的一些事情:
execute_process(COMMAND "date +'%F %T' > timestamp")
add_custom_command(OUTPUT timestamp COMMAND date +"%F %T")
file(WRITE timestamp date +"%F %T")
似乎都没有用。我几乎想知道他们是否甚至被处决了。
我对CMake及其语法的了解非常有限,所以我可能做错了。我希望有人能指出我正确的方向。谢谢!
答案 0 :(得分:13)
我认为我的主要问题是我的命令参数缺少引号。另外,感谢@Mark Setchell,我意识到我应该使用OUTPUT_VARIABLE
来代替OUTPUT
无论如何,这是我得到的答案:
execute_process (
COMMAND bash -c "date +'%F %T'"
OUTPUT_VARIABLE outVar
)
这会将bash命令的输出存储到变量outVar
file(WRITE "datestamp" "${outVar}")
这会将outVar
的内容写入名为" datestamp"的文件中。
答案 1 :(得分:3)
注意 - 使用bash -c也会预先结束一个新行到变量的结尾,这会导致make抱怨,具体取决于你的使用方式
build.make:***缺少分隔符。停止。
这应该解决上面的问题
execute_process(COMMAND which grpc_cpp_plugin OUTPUT_VARIABLE GRPC_CPP_PLUGIN)
string(STRIP ${GRPC_CPP_PLUGIN} GRPC_CPP_PLUGIN)
message(STATUS "MY_VAR=${GRPC_CPP_PLUGIN}")