Specific Toolkits/OS

After reading all down here to get the general idea of what to do, you can go to the next topics to read more on your specific situation.

CodeBlocks with MinGW non unix fashion

With Mingw non Unix fashion

With Mingw/Msys Unix fashion

Eclipse using Wascana and Mingw

Unbuntu install from the command line

Download and Installation of wxArt2D

General Approach

The general approach to get the wxArt2D library and its demos running is:

Due to things being a little complex, it's not unusual to have some problem in between. You might want to take a look at the common issues.

In this documentation there might be a certain bias towards MS Windows (MSW) systems with Visual Studio. However, wxArt2D is known to work with Cygwin and natively on Linux as well. See Working platform and tool sets for more.

Download Tools and Sources

Being able to be built on different platforms, wxArt2D requires more than just its own sources.

Now you have the tools and sources needed to build wxArt2D.

Configure and build wxWidgets

wxWidgets and wxArt2D need to be made with matching configurations.

Especially the contributed scintilla library from wxWidgets is needed. Therefore you need to compile in the contrib directory the stc lib. Path to it looks like wxWidgets-2.8.x\contrib\build\stc, with "x" being your actual wxWidgets version.

You must also set USE_GDIPLUS = 1 in %WXWIN%/build/msw/config.vc, in order to use GdiPlus based drawing. With nmake you can also specify this as extra parameter on the commandline.

Now you have a functional wxWidgets library, including some contribs. Ideally you have verified on some wxWidgets demo, that everything is running well.

Configure and build wxArt2D

The building process of wxArt2D relies on CMake generated makefiles resp. project files. See CMake for a more detailed explanation.

Once your project files or else makefiles are generated, wxArt2D should build without trouble.

Generating wxArt2D Documentation

WxArt2D uses doxygen to generate API documentation straight from the source code. Doxygen again itself uses graphviz to generate graphs of classes. The rest of the documentatio is in this wiki.

In earlier days DocBook was used to generate the general documentation.

For the doxygen documentation there is the option BUILD_DOCUMENTATION in CMakeSetup.

Make sure doxygen and the graphviz its dot tool is in your path variable. You can also set DOT_PATH in doxygen.doxy.

The generated doxygen docs are linked to from within this twiki, like classes. So that makes it easier to read.

Doxygen Docs on This Site

Focus on your own Application

You might want to use CMake or DialogBlocks to automate make file and project file generation. For details see How do I setup my own application.

Common Issues

Static CRT

The CMake scripts do not fully support the use of static C run time libraries. They always use the compiler switches /MDd resp. /MD, instead of the then needed /MTd resp. /MT. To get around this, you need to manually modify the CMake lines for the C++-flags and C-flags before you generate the makefiles. These lines are usually hidden, activate "show advanced values". The names you look for start with CMAKE_CXX_FLAGS_ and CMAKE_C_FLAGS_.

Typical error codes show up at link time or at run time, e.g.

LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library



Remember, these /MTd, /MT, /MDd, /MD flags must be the same throghout wxWidgets, wxArt2D and the rest of your application.


Starting with VS2005 manifests are auto generated. Before manual generation was neccessary, so wxWidgets offers a default manifest. Using the auto generated is strongly preferred, unless you know what you do.

In case you get something like

CVTRES : fatal error CVT1100: duplicate resource.  type:MANIFEST, name:1, language:0x0409
LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt

chances are good, your include files have a wrong order, therefore the wrong rcdef.h gets loaded. The order of includes in your makefile should look like /I.\..\..\lib\vc_lib\mswd /I.\..\..\include. Then the right lib\vc_lib\mswd\wx\msw\rcdef.h gets included, instead of include\wx\msw\rcdefs.h. They differ by (not) defining WX_MSC_FULL_VER, which is used by wx.rc to decide on inclusion of wx's own manifest or not (to rely on the auto generated one).



Optional enabled with WXART2D_USE_FREETYPE.

Freetype is use to make text drawing based on truetype fonts possible. These fonts are vector based and can be scaled etc. as most canvas objects available in wxArt2D.

If not available on your system, the code of freetype is available in the wxArt2D/thirdparty/freetype. And it will be included as a target in your project/makefile automatically. The option WXART2D_USE_FREETYPE_INTERNAL is set ON by default on windows, since this makes things easy. Especially when building various wxArt2D flavors (debug, release, shared etc. ), the freetype compiled right in is always oke.

On Unix/Linux, freetype is installed with package: freetype-devel (e.g. on Fedora: yum install freetype-devel ). On windows you can use the following: * Get the library + headers from: http://gnuwin32.sourceforge.net/packages/freetype.htm * tested with the download called: "Complete package, except sources" * This will add a key to your registry, which is searched for by Cmake, if not oke, use next step. * Do set FREETYPE_DIR in your environment to the location where you installed the above.


Optional enabled with WXART2D_USE_AGGDRAWER.

Agg is a vector drawing library, with sub pixel drawing and alpa blending and what not. The <<Dox{a2dAggDrawer)>> uses Agg internal to do more advanced drawing compared to wxDC drawing.

If not available on your system, Agg is available in wxArt2D/thirdparty/agg2, and it will be included as a target in your project/makefile automatically. Also headers will be installed along with wxArtd2D its headers. So this is the easy way, but feel free to get Agg and compile and install it.

Get it from here:

Using SVN that is:
svn co https://agg.svn.sourceforge.net/svnroot/agg agg

You will find out that it is using Cmake, and its cmake_install.html explains how to compile and install it. It is more or less the same approach as wxArt2d, since i wrote the cmake stuff for it ;-)

wxArt2D with wxLua and wxStEdit

Some modules are default not compiled, since they depend on third party libraries. One of them is wxLua to be used as scripting language. As scripting language within wxArt2D, wxLua is currently available. wxLua itself needs wxStEdit, so you need to get wxLua and wxStEdit compiled for your system. On windows make sure you have the following environment variables set, before starting CmakeSetup.exe to generate your project files. First you build wxStEdit and Next wxLua, both in all flavors you need.

I assume the following are set:

SET WXSTEDIT=c:\soft\art2d\wxstedit
SET WXLUA=c:\soft\art2d\wxLua
SET WXWIN=c:\soft\wxWidgest-2.8.8

Just check on your MDOS command line with:

echo %WXLUA%
echo %WXWIN%

cd %WXSTEDIT%\build
#for debug
nmake -f makefile.vc WX_DEBUG=1
#for release
nmake -f makefile.vc WX_DEBUG=0

cd %WXLUA%\build
#for debug
nmake -f makefile.vc BUILD=debug
#for release
nmake -f makefile.vc BUILD=release

This should give you all the libraries for wxLua and wxStEdit in debug and release mode. Now you start CmakeSetup.exe and enable the option WXART2D_USE_LUA to be ON. The project files wxArt2D.sln, now gets extra targets and samples using wxlua.

P.S. for the moment gdiplus.lib is not used by wxLua, and so WXART2d_USE_GDIPLUSDRAWER is only possible if you add by hand gdiplus.lib to the wxLua makefile.vc files. That is in %WXLUA%\apps\build\msw\makefile.vc, just add it where you see *.lib files.

On Unix you need to set the same variable on your shell command line.

I assume:

export WXSTEDIT=/home/myhome/art2d/wxstedit
export WXLUA=/home/myhome/art2d/wxLua
export WXWIN=/home/myhome/art2d/wxWidgest-2.8.8

Use: this to compile and install for wxstedit and wxlua.

./configure (right option see ./configure --help)
make install

Next configure wxArt2D and compile:

export WXART2D=/home/myhome/art2d/wxArt2D
cd ..
mkdir buildArt2dWithWxLua
cd buildArt2dWithWxLua
ccmake ../wxArt2D


After building there is als install. On Unix this is just make install. Files will be installed to CMAKE_INSTAAL_PREFIX, which default to /usr/local. But you can set this cmake variable yourself in the cmake-gui interface. wxArt2D is using the (relative CMAKE_INSTAAL_PREFIX ) directores bin, lib, include/wxart2d, share/wxart2d to install too. The bin is used to place the wxart2dconfig.exe, it is meant for non Cmake situation to get information on libraries and includes paths etc. Use wxart2dconfig.exe --help The recomended way is the CMake way. Therefore you find in share/wxart2d the following files:

You need to use FIND_PACKAGE( wxArt2D ) in your own CMakeLists.txt files, and it will search FindwxArt2D.cmake. Which on its turn searches wxAr2tDConfig.cmake.

For details see How do I setup my own application.


Cmake offers ways to generate installation packages. For windows the http://nsis.sourceforge.net is used for a full automatix installer executable. But also a zip file is generated. The first adds a register key like this:
This KEY is used to detect wxArt2D in FindwxArt2D.cmake, if you use the zip file, you will need to set WXART2D_DIR in your environment to reach the same.

The wxArt2D CMake option to generate package scripts is: WXART2D-USE_PACK.
Calling the Cmake tool:
cpack.exe -C debug or cpack.exe -C release
on the command line, will result in files like:

The command: cpack.exe -C debug is to be used in a debug builds, and search for debug libraries. The command: cpack.exe -C release is to be used in a release build, and search for release libraries.

The default configuration file for CPack is CPackConfig.cmake, with the next you can choose.

This last one packs the wxArt2D source directory ( CVS checkout in general ), while the default takes all installed files, and packs those.

On unix you type:

For generating the packages you will need to install the next two program:

Understanding how and where things are installed on Unix/Linux is here: http://www.gnu.org/prep/standards/standards.html#Directory-Variables