Skip to content

Latest commit

 

History

History
86 lines (63 loc) · 4 KB

README.md

File metadata and controls

86 lines (63 loc) · 4 KB

build status build status build status

hxWidgets

Haxe externs (and wrappers) for wxWidgets

Dependencies

You need the hxcpp library and at least Haxe 3.4.0, we recommend Haxe 3.4.2.

Windows

  • Download and install wxWidgets source from https://www.wxwidgets.org/downloads/
  • Create WXWIN environment var if setup didnt (eg: C:\wxWidgets-3.0.2)
  • Open a Visual Studio Developer prompt, or run vcvarsall.bat from Visual Studio dir in your current prompt (eg: "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat")
  • Build shared and static releases of wxWidgets:
    • cd %WXWIN%\build\msw\
    • nmake.exe -f makefile.vc BUILD=release
    • nmake.exe -f makefile.vc BUILD=release SHARED=1
    • nmake.exe -f makefile.vc BUILD=release TARGET_CPU=X64
    • nmake.exe -f makefile.vc BUILD=release SHARED=1 TARGET_CPU=X64

Warning

If you are trying to build x64 versions of wxWidgets you need to use a "64-bit hosted developer command prompt" shortcut: https://learn.microsoft.com/en-us/cpp/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line?view=msvc-170

Important

You may need to add -D HXCPP_M64 to your .hxml file if you are using a x64 version of wxWidgets

Requirements for Linux and Mac

You need wxWidgets 3.x and wx-config available in your path.

Linux

You can install wxWidgets with:

  • debian/ubuntu 20.04 (or later):
    • apt-get install libwxgtk3.0-gtk3-dev libwxbase3.0-dev libwxgtk-webview3.0-gtk3-dev
  • debian/ubuntu (older versions):
    • apt-get install libwxgtk3.0-dev libwxbase3.0-dev libwxgtk-webview3.0-dev

Mac

You need at least OSX 10.7 and you can install wxWidgets with:

brew update
brew install wxwidgets

More About this Library

hxWidgets is actually independent of haxeui-core (and haxeui-hxwidgets as well), and can be used on its own if you so desired (the showcase in this repo is an example of that). hxWidgets consists of two layers:

  • wx.widgets.* (e.g., wx.widgets.Button) : these are externs for Haxe (hxcpp) for wxWidgets, and could be used as-is — though, working with externs, esp. C++ externs, can be... difficult.

  • hx.widgets.* (e.g., hx.widgets.Button) : these are nice Haxe wrappers for the externs so you can just do new Button(...) and be done with it (it manages all the pointers, etc.). They also make things a little more "haxey" in the sense that you have myButton.bitmap = ... rather than the traditional wx way myButton.setBitmap(...).

Building WxWidgets From Source (Linux & OSX)

Sometimes is useful to have the most up-to-date version of wxWidgets running on a linux or OSX system, to do this follow these steps:

  • download source archive from: https://www.wxwidgets.org/downloads/
  • unzip to, for example: /home/users/username/wxwidgets3.1.3/
  • create a folder there: mkdir wx_build
  • enter folder: cd wx_build
  • configure: ../configure --with-opengl --disable-shared
    • if you get errors during configure you likely need to run one (or all) of the following (on linux):
      • sudo apt install build-essential
      • sudo apt install libgtk2.0-dev
      • sudo apt install libgtk-3-dev
      • sudo apt install freeglut3-dev
  • make: make (adding -j3 will allow your system to use 3 cores and thus speed up the initial compile)
  • once built, install: make install (may need sudo if not default /usr/local location)
  • wx-config --version should now show the version you just built
    • you may need to add the unzip folder to your $PATH var if it doesnt show the right version