我的IDE /编译器是Windows上的Code :: Blocks / GCC.我想为Windows,Linux和OSX编译它.
我的问题:
>编译wxWidgets和Lua
>建筑wxLua
>创建一个跨平台项目,知道哪个库用于哪个操作系统
我在wxLua上阅读了很多文档,发现你应该使用wxWidgets 2.8.12和Lua 5.2.3(因为它们是两个最新的稳定和受支持的版本).
如果可能,我希望程序最终成为一个独立的可执行文件.
所以我想我需要编译Lua和wxWidgets作为.lib库(Windows)和.a库(Linux / OSX),是正确的吗?我该怎么做?
一旦完成,what kind of project do I need to create和我如何嵌入wxLua到该项目? I couldn’t find a lot of information on that.
最后,我将如何告诉我的IDE / project / makefile(?)哪些库用于哪个操作系统?
解决方法
以下是在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.
我在this repository中有Windows,OSX和Linux的工作版本脚本.脚本已经在最新的wxwidgets和wxlua版本(使用两个存储库的中继)进行了测试.他们生成一个与Lua dll(在Windows上)相连的wxlua库,所以它不是一个静态的配置,你可能正在寻找,但有静态构建可能会阻止你加载其他Lua库(除非你导出正确的符号并提供一个代理DLL as described here),所以我不建议配置.
此外,我仍然使用Lua5.1与wxlua和wxwidgets,因为这允许我使用LuaJIT作为替代替代,以获得更好的性能在某些情况下.如果您使用Lua 5.2编译wxlua,因为它们的ABI不同,您将不会有此选项.
在与自己的基于C的工具包的集成方面,最好的选择可能是将其作为Lua库公开,并从wxlua应用程序加载,因为您将加载任何其他库,因为它允许您保持组件彼此独立.