CMake add_custom_command:如何将 "quoted string" 写入文件?

CMake add_custom_command: How to write a "quoted string" to a file?

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

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

我尝试了各种方法来转义引号 \"\"\\",引用整个命令,将命令放在变量中,但是 none他们工作了。如何实现?

以下适用于 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 中调用该脚本.