我需要执行add_custom_command一个捕获其标准输出的命令.shell重定向到文件>不起作用,add_custom_command并且没有任何相关选项.我该怎么做?
(请注意,由于Florian的评论,我在调查问题后改变了我的答案.有关下面编辑的更多信息)
execute_process明确说明它不使用中间shell 的文档,因此重定向操作符不能在那里工作.
但事实并非如此add_custom_command.重定向应按预期在那里工作.[编辑]有时它看起来不起作用的原因是CMake生成器,说明VERBATIM符和>文件名之间的(缺失)空间的一些不幸的组合.
事实证明,如果确保>在大多数情况下它与之间存在空间和文件名,即使是VERBATIM:
add_custom_command(OUTPUT ${some-file}
COMMAND cmake --version > ${some-file}
VERBATIM # optional
)
Run Code Online (Sandbox Code Playgroud)
关于替代解决方案的说明:之前我认为add_custom_command,就像execute_process不使用中间shell一样,所以我建议调用一个CMake脚本,其中包含一个execute_process运行实际命令的命令,使用该OUTPUT_FILE选项重定向其输出.
如果由于某种原因上面的解决方案仍然失败,请尝试使用ExecuteProcessWrapper.cmake替代解决方案
| 归档时间: |
|
| 查看次数: |
7983 次 |
| 最近记录: |