Один із авторів Qt Блога поділився своїм досвідом використання утиліти Cling. Для вирішення повсякденних завдань йому потрібно було написати кілька скриптів, а як скриптова мова він використовував C++!!! Для цього він скористався утилітою Cling, яка є інтерпретатором C++ на базі компілятора Clang, та створена CERN.
Cling дозволяє розробникам писати сценарії з використанням C та C++. Оскільки він використовує компілятор Clang, він підтримує останні версії стандарту C++. Якщо ви виконуєте інтерпретатор безпосередньо, у вас буде живе середовище виконання, в якому ви можете почати писати код на C++. Як частина стандартного синтаксису C/C++ ви знайдете кілька інших команд, що починаються з «.» (Крапка).
Коли ви використовуєте інтерактивний інтерпретатор, ви можете написати код, наприклад:
#include <stdio.h> printf("hello world\n");
Як ви можете бачити, немає потреби турбуватися про області; Ви можете просто викликати функцію.
Якщо ви плануєте використовувати Cling як інтерпретатор для створення ваших скриптів, вам необхідно обернути всі функції всередині. Точка входу стандартного скрипта така ж, як ім'я файлу. Він може бути налаштований для виклику іншої функції. Таким чином, попередній приклад перетворився б на щось на зразок:
#include <stdio.h> void _01_hello_world() { printf("foo\n"); }
... або версія C ++
#include <iostream> void _02_hello_world() { std::cout << "Hello world" << std::endl; }
Приклади досить прості, але показують, з чого почати.
Що з приводу Qt?
#include <QtWidgets/qapplication.h> #include <QtWidgets/qpushbutton.h> void _03_basic_qt() { int argc = 0; QApplication app(argc, nullptr); QPushButton button("Hello world"); QObject::connect(&button, &QPushButton::pressed, &app, &QApplication::quit); button.show(); app.exec(); }
Але цей код не буде працювати з коробки - вам потрібно передати деякі параметри для Cling:
cling -I/usr/include/x86_64-linux-gnu/qt5 -fPIC -lQt5Widgets 03_basic_qt.cpp
Ви можете налаштувати свій «cling» у скрипті користувача на основі ваших потреб.
Ви також можете завантажити Cling як бібліотеку у своїх програмах, щоб використовувати C++ як скриптову мову.