"Live"代码和使用C++和LLVM JIT进行快速原型设计?
"Live" code and rapid prototyping with C++ and LLVM JIT?
你可能已经看过Bret Victor的"实时"JS IDE,或者它启发的一些替代实现,扩展到其他语言,但仍然保留它基于VM的语言。
然而,昨天,我偶然发现了同样的概念,应用于古老的C++,这要归功于LLVM。仍然是一个非常早期和不成熟的实施,但有很大的潜力。
我真的很好奇这个实现,但是作者已经并且可能不会将其公开发布。
所以我的问题是,如果有人知道有关如何实现类似功能的资源,我的意思是几乎即时的编译和两个连接,提供代码的实时反馈,允许视觉部分更改甚至生成和预览其他代码?
名为"Cling"的基于 clang 的 C/C++ 解释器可能是相关的代码段。了解如何使用它来实时构建 GUI:http://www.youtube.com/watch?v=BrjV1ZgYbbA
Linux:如果有人想要一种天真的方法来几乎实时地测试快速的 C/C++ 代码,你可以使用我组装的这段代码:
#!/bin/bash
#Requires: inotify-tools
################################
# Adjust values:
terminal="xterm"
editor="vim"
compiler="clang++"
################################
if [[ $1 == "" ]]; then
echo "Usage: $0 example.cpp";
exit
fi
file_to_edit=$1
file_output=${file_to_edit%%.*}
(while(true); do
change=$(inotifywait -q -e close_write,moved_to,create .);
change=${change#./ * }
if [ "$change" = "$file_to_edit" ]; then
($compiler $file_to_edit -o $file_output);
fi
done) & > /dev/null
$terminal -e "watch -n 1 ./$file_output" &
$editor $file_to_edit;
pkill -P $$
注意:它需要"通知工具"包。
它是如何工作的?
1)它将打开一个终端(默认:xterm),其中每秒将使用"watch"命令执行二进制文件(如果不存在文件,则只会显示"未找到错误")
2)如果你的C/C++代码发生变化,它会编译它(默认编译器:clang++,但你可以使用gcc等)。如果需要,可以在以下位置修改编译命令: $compiler $file_to_edit -o $file_output
3)它将使用您选择的编辑器打开文件(默认为vim)。
4)出口时将关闭终端和监控过程。
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- 功能原型的目的
- getline() 的原型/库是什么;
- 具有enable_if外部类原型的模板类构造函数定义
- 函数如何通知用户它基于函数原型抛出异常?
- 在C++中包含原型文件的正确方法是什么?
- 在函数中拥有函数原型的目的是什么?
- 什么..(省略号)作为函数原型中唯一的函数参数,C++?
- 是否可以使用 libclang python 解析 cpp 文件中没有标头的函数原型
- 如果原型是本地的,则使用流 I/O C++类型约束将失败
- 如何进行原型消息交叉引用?
- LLVM 万花筒教程 JIT 编译问题
- 有没有办法在C++编译时更改函数原型?
- 省略函数原型中的返回类型
- 在 linux 原因上运行自定义原型插件
- 为什么以及如何使用原型设计模式
- 您是否必须随项目一起交付原型文件?
- 如何在C++中遍历谷歌原型地图?
- 错误:'EM::EM(...)' 的原型与类 'EM' 中的任何原型都不匹配
- "Live"代码和使用C++和LLVM JIT进行快速原型设计?