代码块的脚本语言

时间:2013-09-09 22:02:52

标签: lua codeblocks squirrel

我将code :: blocks作为我的C / C ++编译器以及C ++ for dummies,但我唯一的问题是使用了一种我以前从未听说过的晦涩的脚本语言; “松鼠”。是否可以将code :: blocks的脚本语言更改为我更熟悉的内容,如lua?

1 个答案:

答案 0 :(得分:0)

理论上似乎可行。在实践中是否可行,很难说。以下是您需要做的事情:

  1. 创建一个文件夹src / sdk / scripting / lua,在其中放置Lua解释器(+ Lua库,如io,math等)源代码并为其创建项目文件
  2. 在src / sdk / scripting / lua_bindings中创建一个文件夹,放置Lua绑定:允许Lua脚本访问主机应用程序的C ++文件。我建议你使用像SWIG这样的工具来生成它们(codeblocks使用SqPlus)。这涉及确定要导出的代码块功能/类,创建一个或多个.i文件,在其上运行SWIG,将生成的文件放入“lua_bindings”;为绑定创建一个DLL项目
  3. 创建一个src / lua_scripts,在其中放置在src / scripts中找到的Lua等效脚本;或者更确切地说,这些脚本的一个子集,因为如果你只是按照书中的例子,你不太可能想要通过Squirrel将所有可用的东西导出到Lua
  4. 查找Squirrel解释器在代码块中实例化的位置以及调用RegisterBindings的位置;用Lua解释器的实例化替换它并调用你将通过SWIG创建的luaopen_codeblocks(如果你使用SWIG则不需要RegisterLuaBindings,它会为你做到这一点)
  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);
    }
    
  6. 我认为就是这样。

    当然,基于你的脚本有多广泛,你可能会削减一些角落,但正如你所看到的,这不适合胆小的人!