cmake - CMake add_custom_command:如何将“引用字符串”写入文件?
问题描述
我花了太多时间尝试添加将“引用字符串”写入文件的自定义命令:
add_custom_command(
OUTPUT file
COMMAND ${CMAKE_COMMAND} -E echo "\"quoted string\"" > file
...
DEPENDS something
VERBATIM (?)
)
我尝试了各种方法来转义引号\"
, \\"
, \\\"
, 引用整个命令,将命令放入变量中,但它们都不起作用。如何做到这一点?
解决方案
以下适用于 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
.
推荐阅读
- dart - Dart 扩展:除非避免阴影,否则不要使用“this”访问成员
- php - Composer windows 10 安装错误,PHP7,Xampp 3.2,Mysql 5.6.2
- docker - Dockerfile 中是否需要提及 CMD 或 ENTRYPOINT?
- abap - 如何在 ABAP 中表示更“复杂”的构造函数?
- python - 为什么 Python 脚本会在 Windows 10 上意外退出?
- python-3.x - 如何使用python在命令提示符下执行命令
- python - 将 txt 文件中的行分配给 html 文件 regex bs4
- python - 建立一个 IR 系统,在最后一行的第二行给出错误,即未定义名称
- cuda - CUDA 如何知道将 void* 视为符号?
- c# - '对象不能从 DBNull 转换为其他类型。' 在存储过程中