Wx-Config

From WxWiki
Jump to navigation Jump to search

wx-config is a small command-line utility which can help you while building on unix-like systems (including linux and Mac OS X) It will :

  • tell you what compile flags to use (wx-config --cxxflags)
  • tell you what link flags to use (wx-config --libs)
  • can manage multiple wxWidgets installs with different configurations (wx-config --list et al)

How to use wx-config

Simple use might be something like this:

g++ `wx-config --cxxflags` -o myapp *.cpp `wx-config --libs`

Note: The order of arguments does matter: `wx-config --libs` needs to be at the end of command line.

Of course, if you compile and link your application in separate steps, as is common, you will want to use the --cxxflags bit when compiling to .o and the --libs part when linking them into an executable:

g++ -c `wx-config --cxxflags` a.cpp
g++ -c `wx-config --cxxflags` b.cpp
g++ -o myapp a.o b.o `wx-config --libs`

You can even ask wx-config to pick a compiler :

  `wx-config --cxx --cxxflags` -o myapp *.cpp `wx-config --libs`

If you have multiple wxWidgets installations in the same prefix (e.g. /usr/local/), you can select the right build with options like :

  • --debug=[yes/no]
  • --version=[2.8/etc.]

Type wx-config --help to know all options that are available

Miscellaneous notes :

  • From your IDE, you can simply put `wx-config --cxxflags` in compile flags and `wx-config --libs` in link flags
    • If your IDE doesn't support backtick execution or some equivalent, here's what to do : #1 complain to whoever wrote your IDE and #2 run these commands without the backticks in a terminal and copy the output manually
  • wx-config will be installed to a system-wide directory on make install, however it is not necessary to issue make install in order to use wx-config. Whenever you build wxWidgets, a local wx-config will be created in the build directory. You can then simply get the flags by calling wx-config locally : ./wx-config. This can also help keeping different configurations truly separate and may avoid some conflicts.
  • On Unix systems, wx-config may be a symlink to specific wx-config files for various wxWidgets ports/platforms (wxbase-2.5-config, wxgtk-2.5-config, ...).
  • There is also a --basename and --release option, which are helpful for write-once Makefiles (using the same makefile across linux and OSX and for different versions of the library like debug/nondebug unicode/non-unicode, gkt/mac).
  • wx-config is very useful, but the GIGO principle applies. If you do: `wx-config --libs foobar` you'll get output like -lwx_gtk2u_foobar-3.0. However it doesn't cause a lib with that name magically to be created...

Important note for wx3.0 and later

wx-config --libs now only gives you access to the standard libraries. If you want (for example) to use aui as well, you need to do this:

`wx-config --libs std,aui`

where 'std' outputs the standard libs.

(Note that `wx-config --libs aui` will only use the aui library, e.g., -lwx_gtk2u_aui-3.0, and not the standard library.)

Non-standard (non-std) libs you might use include: aui, richtext, stc, and webview.

Alternatively,

`wx-config --libs all`

returns all available libraries, but this is not best practice. If at all possible, only link the libraries you need.

Windows

Now there is also a c++ wx-config Windows port, which works similar to this wx-config.