编译 wxLua(跨平台和静态)
2015-4-17 9:17:7
收藏:0
阅读:204
评论:1
我计划创建一个新的C++项目,在其中编写一些C++函数,在其中嵌入带有wxLua的Lua引擎,将我的C/C++函数可用于Lua一侧,然后使用Lua编写我的主程序(包括GUI)。
我的IDE/编译器是Code::Blocks/GCC在Windows上。我想将其编译为Windows、Linux和OSX。
我的问题:
- 编译wxWidgets和Lua
- 构建wxLua
- 创建一个跨平台项目,知道为哪些操作系统使用哪些库
我阅读了很多关于wxLua的文档,发现最好使用wxWidgets 2.8.12和Lua 5.2.3(因为它们是两个最新的稳定且受支持的版本)。
如果可能的话,我希望程序最终是一个独立的可执行文件。
所以我猜我需要编译Lua和wxWidgets作为.lib库(Windows)和.a库(Linux/OSX),是这正确吗?我该怎么做呢?
一旦做到了这一点,我需要创建什么类型的项目,并如何将wxLua嵌入到该项目中? 我找不到太多有关它的信息。
最后,我该如何告诉我的IDE/项目/makefile(?)为哪个操作系统使用哪些库?
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
以下是我在Windows/OSX/Linux上如何编译wxwidgets/wxlua来进行跨平台项目的说明,但我使用的是gcc/mingw-tdm而不是Code::Blocks,所以您可能需要根据您的环境进行调整。
以下是如何在Windows上构建wxwidgets:
./configure --prefix="$INSTALL_DIR" --disable-shared --enable-unicode \ --enable-compat28 \ --with-libjpeg=builtin --with-libpng=builtin --with-libtiff=no --with-expat=no \ --with-zlib=builtin --disable-richtext \ CFLAGS="-Os -fno-keep-inline-dllexport" CXXFLAGS="-Os -fno-keep-inline-dllexport" make make install以下是如何在Windows上构建wxlua:
cmake -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_SHARED_LIBS=FALSE \ -DwxWidgets_CONFIG_EXECUTABLE="$INSTALL_DIR/bin/wx-config" \ -DwxWidgets_COMPONENTS="stc;html;aui;adv;core;net;base" \ -DwxLuaBind_COMPONENTS="stc;html;aui;adv;core;net;base" -DwxLua_LUA_LIBRARY_USE_BUILTIN=FALSE \ -DwxLua_LUA_INCLUDE_DIR="$INSTALL_DIR/include" -DwxLua_LUA_LIBRARY="$INSTALL_DIR/lib/lua51.dll" . (cd modules/luamodule; make) (cd modules/luamodule; make install/strip)您需要更新wxlua构建指令,以使用Lua5.2而不是我使用的Lua5.1。
我在此存储库中拥有可用的构建脚本,适用于Windows,OSX和Linux,已在最新的wxwidgets和wxlua版本上进行了测试(使用这两个存储库的源代码)。它们生成一个wxlua库,与Lua dll链接(在Windows上),因此这不完全是您可能要寻找的静态配置,但具有静态构建可能会防止您加载其他Lua库(除非您导出正确的符号并提供代理DLL,就像这里描述的那样),因此我不建议使用这种配置。
此外,我仍在使用Lua5.1与wxlua和wxwidgets,因为这使我可以使用LuaJIT作为替代选择,在某些情况下获得更好的性能。如果您使用Lua 5.2编译wxlua,则无法使用此选项,因为它们的ABI不同。
在与您自己的基于C ++的工具包集成方面,最好的选项可能是将其公开为Lua库,然后从wxlua应用程序中加载它,就像加载任何其他库一样,因为它允许您将组件相互独立。