首页 > 解决方案 > CMake add_custom_command:如何将“引用字符串”写入文件?

问题描述

我花了太多时间尝试添加将“引用字符串”写入文件的自定义命令:

add_custom_command(
    OUTPUT file
    COMMAND ${CMAKE_COMMAND} -E echo "\"quoted string\"" > file
    ...
    DEPENDS something
    VERBATIM (?)
)

我尝试了各种方法来转义引号\", \\", \\\", 引用整个命令,将命令放入变量中,但它们都不起作用。如何做到这一点?

标签: cmake

解决方案


以下适用于 Windows(Ninja) 和 WSL(unix makefiles):

set(my_output what_it_is.txt)
add_custom_command(
        OUTPUT ${my_output}
        COMMAND ${CMAKE_COMMAND} -E echo \"quoted string\" > ${my_output}
        VERBATIM
)

和输出:

$ cat some_bin/what_it_is.txt
"quoted string"

以我有限的经验,VERBATIM如果您在自定义命令中与逃避事物作斗争,通常是关键。

注意:我相信重定向是特定于平台的,因此您可能需要考虑在 CMake 脚本中执行类似file命令并在自定义命令中调用该脚本,COMMAND ${CMAKE_COMMAND} -P some_script.cmake.


推荐阅读