c – 编译wxLua(跨平台和静态)

前端之家收集整理的这篇文章主要介绍了c – 编译wxLua(跨平台和静态)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我计划创建一个新的C项目,在其中编写一些C函数,将一个带有wxLua的Lua引擎嵌入到其中,使我的C/C++函数可用于Lua端,然后将我的主程序(包括GUI)写入Lua中.

我的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 / 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.

我在this repository中有Windows,OSXLinux的工作版本脚本.脚本已经在最新的wxwidgets和wxlua版本(使用两个存储库的中继)进行了测试.他们生成一个与Lua dll(在Windows上)相连的wxlua库,所以它不是一个静态的配置,你可能正在寻找,但有静态构建可能会阻止你加载其他Lua库(除非你导出正确的符号并提供一个代理DLL as described here),所以我不建议配置.

此外,我仍然使用Lua5.1与wxlua和wxwidgets,因为这允许我使用LuaJIT作为替代替代,以获得更好的性能在某些情况下.如果您使用Lua 5.2编译wxlua,因为它们的ABI不同,您将不会有此选项.

在与自己的基于C的工具包的集成方面,最好的选择可能是将其作为Lua库公开,并从wxlua应用程序加载,因为您将加载任何其他库,因为它允许您保持组件彼此独立.

猜你在找的C&C++相关文章