Язык сценариев для блоков кода
Я получил code::blocks в качестве моего компилятора C/C++ вместе с C++ для чайников, но моя единственная проблема заключается в неясном языке сценариев, о котором я никогда раньше не слышал; "Белок". Можно ли изменить язык сценариев code::blocks на что-то более знакомое мне, например, lua?
1 ответ
Это кажется выполнимым в теории. Насколько это выполнимо на практике, сказать сложно. Вот что вам нужно сделать:
- создайте папку src/sdk/scripting/lua, в которую вы поместите исходный код интерпретатора Lua (+ библиотеки Lua, такие как io, math и т. д.) и создайте для него файл проекта
- создайте папку в src/sdk/scripting/lua_bindings, куда вы помещаете свои привязки Lua: файлы C++, которые разрешают сценариям Lua доступ к хост-приложению. Я рекомендую вам использовать такой инструмент, как SWIG, чтобы генерировать их (кодовые блоки используют SqPlus). Это включает в себя определение того, какие функции / классы кодовых блоков вы хотите экспортировать, создание одного или нескольких файлов.i, запуск на них SWIG, помещение сгенерированных файлов в "lua_bindings"; создать проект DLL для привязок
- Создайте src / lua_scripts, в который вы помещаете Lua-эквивалент сценариев, найденных в src / scripts; или, скорее, подмножество этих сценариев, потому что вряд ли вы захотите экспортировать в Lua все, что доступно через Squirrel, если вы просто следуете примерам из книги
- Найти, где интерпретатор Squirrel создается в кодовых блоках и где вызывается RegisterBindings; замените его на создание экземпляра интерпретатора Lua и вызовите ваши luaopen_codeblocks, которые вы создадите с помощью SWIG (нет необходимости в RegisterLuaBindings, если вы используете SWIG, он сделает это за вас)
Найдите, где различные скрипты вызываются кодовыми блоками (см. 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); }
Я думаю, что это об этом.
Естественно, исходя из того, насколько обширен ваш сценарий, вы можете срезать некоторые углы, но, как видите, это не для слабонервных!