Язык сценариев для блоков кода

Я получил code::blocks в качестве моего компилятора C/C++ вместе с C++ для чайников, но моя единственная проблема заключается в неясном языке сценариев, о котором я никогда раньше не слышал; "Белок". Можно ли изменить язык сценариев code::blocks на что-то более знакомое мне, например, lua?

1 ответ

Это кажется выполнимым в теории. Насколько это выполнимо на практике, сказать сложно. Вот что вам нужно сделать:

  1. создайте папку src/sdk/scripting/lua, в которую вы поместите исходный код интерпретатора Lua (+ библиотеки Lua, такие как io, math и т. д.) и создайте для него файл проекта
  2. создайте папку в src/sdk/scripting/lua_bindings, куда вы помещаете свои привязки Lua: файлы C++, которые разрешают сценариям Lua доступ к хост-приложению. Я рекомендую вам использовать такой инструмент, как SWIG, чтобы генерировать их (кодовые блоки используют SqPlus). Это включает в себя определение того, какие функции / классы кодовых блоков вы хотите экспортировать, создание одного или нескольких файлов.i, запуск на них SWIG, помещение сгенерированных файлов в "lua_bindings"; создать проект DLL для привязок
  3. Создайте src / lua_scripts, в который вы помещаете Lua-эквивалент сценариев, найденных в src / scripts; или, скорее, подмножество этих сценариев, потому что вряд ли вы захотите экспортировать в Lua все, что доступно через Squirrel, если вы просто следуете примерам из книги
  4. Найти, где интерпретатор Squirrel создается в кодовых блоках и где вызывается RegisterBindings; замените его на создание экземпляра интерпретатора Lua и вызовите ваши luaopen_codeblocks, которые вы создадите с помощью SWIG (нет необходимости в RegisterLuaBindings, если вы используете SWIG, он сделает это за вас)
  5. Найдите, где различные скрипты вызываются кодовыми блоками (см. http://wiki.codeblocks.org/index.php?title=Scripting_Code::Blocks). Вызовите эквивалентные сценарии Lua (которые находятся в lua_scripts - вам наверняка придется скопировать это в папку установки для кодовых блоков). Например, startup.script, который является скриптом Squirrel, который автоматически ищет кодовые блоки при запуске, запускается с помощью следующего кода в src / src / app.cpp:

    // run startup script
    try
    {
        wxString startup = ConfigManager::LocateDataFile(_T("startup.script"), sdScriptsUser | sdScriptsGlobal);
        if (!startup.IsEmpty())
            Manager::Get()->GetScriptingManager()->LoadScript(startup);
    }
    catch (SquirrelError& exception)
    {
        Manager::Get()->GetScriptingManager()->DisplayErrors(&exception);
    }
    

Я думаю, что это об этом.

Естественно, исходя из того, насколько обширен ваш сценарий, вы можете срезать некоторые углы, но, как видите, это не для слабонервных!

Другие вопросы по тегам