11

您可能已经看过Bret Victor 的“实时”JS IDE,或者它启发的一些替代实现,它们扩展到其他语言,但仍然保留在基于 VM 的语言中。

然而,昨天,我偶然发现了同样的概念,它应用在了很好的旧 C++中,这要归功于 LLVM。仍然是一个非常早期和不成熟的实施,但有很大的潜力。

我真的很好奇它的实现,但是作者已经并且可能不会将它公开。

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

4

2 回答 2

2

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

于 2012-09-16T16:32:04.940 回答
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) 退出时将关闭终端和监控进程。

于 2015-10-08T07:03:39.007 回答