компиляция — & quot; Живи & quot; код и быстрое создание прототипов с C ++ и LLVM JIT?

Возможно, вы уже видели Брет Виктор «живой» JS IDE, или некоторые из альтернативные реализации оно вдохновляло, распространяясь на другие языки, но все же сохраняя его на основе виртуальных машин.

Вчера, однако, я наткнулся на та же концепция, применяемая в старом добром C ++, благодаря LLVM. Все еще очень ранняя и незрелая реализация, но с большим потенциалом.

Мне было действительно любопытно реализовать, однако автор имеет и может не выпустить его в открытую.

Поэтому мой вопрос: знает ли кто-нибудь ресурс о том, как реализовать аналогичную функциональность, я имею в виду почти мгновенную компиляцию и два соединения, дающих обратную связь кода в реальном времени, позволяющую визуальной части изменять или даже генерировать и предварительно просматривать дополнительный код?

10

Решение

Основанный на clang интерпретатор C / C ++ под названием «Cling» может быть важной частью кода. Посмотрите, как это можно использовать для создания GUI в режиме реального времени: http://www.youtube.com/watch?v=BrjV1ZgYbbA

2

Другие решения

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’ (если файл не существует, он просто отобразит ‘not found error’)

2) Если ваш код C / C ++ изменится, он скомпилирует его (компилятор по умолчанию: clang ++, но вы можете использовать gcc и т. Д.). Вы можете изменить команду компиляции, если хотите: $compiler $file_to_edit -o $file_output

3) Откроется файл с выбранным вами редактором (по умолчанию vim).

4) При выходе закроют терминал и процесс мониторинга.

0

По вопросам рекламы [email protected]