“实时”代码和使用C ++和LLVM JIT进行快速原型设计?

时间:2012-09-16 09:09:28

标签: c++ compilation real-time llvm jit

您可能已经看到Bret Victor's "live" JS IDE或其中一些alternative implementations受到启发,扩展到其他语言,但仍然将其保留给基于VM的语言。

昨天,由于LLVM,我偶然发现了the same concept, applied in good old C++。仍然是一个非常早期和不成熟的实施,但具有充分的潜力。

我对实现非常好奇,但是作者已经并且可能不会将其公开发布。

所以我的问题是,如果有人知道如何实现类似功能的资源,我的意思是几乎即时编译和两个连接,提供代码的实时反馈,允许可视部分更改甚至生成和预览附加代码?

2 个答案:

答案 0 :(得分:2)

基于clang的C / C ++解释器名为“Cling”可能是相关的代码段。了解它如何用于实时构建GUI:http://www.youtube.com/watch?v=BrjV1ZgYbbA

答案 1 :(得分:0)

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 $$

注意:它需要“inotify-tools”包。

它是如何运作的?

1)它将打开一个终端(默认值:xterm),其中每秒都将使用'watch'命令执行二进制文件(如果不存在文件,它将只显示'未找到错误')

2)如果您的C / C ++代码发生了变化,它将编译它(默认编译器:clang ++,但您可以使用gcc等)。如果需要,可以修改编译命令:$compiler $file_to_edit -o $file_output

3)它将使用您选择的编辑器打开文件(默认为vim)。

4)退出时将关闭终端和监控过程。