从CMake文件执行bash命令

use*_*321 11 bash cmake

我无法理解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及其语法的了解非常有限,所以我可能做错了.我希望有人能指出我正确的方向.谢谢!

use*_*321 17

我认为我的主要问题是我的命令参数缺少引号.另外,感谢@Mark Setchell,我意识到我应该用OUTPUT_VARIABLE它代替OUTPUT

无论如何,这是我得到的答案:

execute_process (
    COMMAND bash -c "date +'%F %T'"
    OUTPUT_VARIABLE outVar
)
Run Code Online (Sandbox Code Playgroud)

这会将bash命令的输出存储到变量中 outVar

file(WRITE "datestamp" "${outVar}")
Run Code Online (Sandbox Code Playgroud)

这会将内容写入outVar名为"datestamp"的文件中.


Ale*_*nen 5

注意-使用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}")
Run Code Online (Sandbox Code Playgroud)