|
| 1 | +# libsigc++ : The Typesafe Callback Framework for C++ |
| 2 | + |
| 3 | +## Introduction |
| 4 | + |
| 5 | +libsigc++ implements a typesafe callback system for standard C++. It |
| 6 | +allows you to define signals and to connect those signals to any |
| 7 | +callback function, either global or a member function, regardless of |
| 8 | +whether it is static or virtual. |
| 9 | + |
| 10 | +libsigc++ is used by gtkmm to wrap the GTK signal system. It does not |
| 11 | +depend on GTK or gtkmm. |
| 12 | + |
| 13 | +sigc++-2.0 and sigc++-3.0 are different parallel-installable ABIs. |
| 14 | +This file describes sigc++-2.0. |
| 15 | + |
| 16 | +See the [libsigc++ web site](https://libsigcplusplus.github.io/libsigcplusplus/) |
| 17 | + |
| 18 | +## License |
| 19 | + |
| 20 | +Distribution of library and components is under the LGPL as listed in the |
| 21 | +file COPYING. Examples and tests are Public Domain. |
| 22 | + |
| 23 | +## Compatibility |
| 24 | + |
| 25 | +Compatible compilers must support C++11, such as the decltype() specifier. |
| 26 | + |
| 27 | +## Build |
| 28 | + |
| 29 | +Whenever possible, you should use the official binary packages approved by the |
| 30 | +supplier of your operating system, such as your Linux distribution. For |
| 31 | +instance, Ubuntu Linux, Debian Linux and Fedora Linux have official libsigc++ |
| 32 | +packages. |
| 33 | + |
| 34 | +## Building from a release tarball |
| 35 | + |
| 36 | +Building from the [libsigc++ release tarball](https://github.com/libsigcplusplus/libsigcplusplus/releases) |
| 37 | +is easier than building from git. |
| 38 | + |
| 39 | +It's easiest to build with Meson, if the tarball was made with Meson, |
| 40 | +and to build with Autotools, if the tarball was made with Autotools. |
| 41 | +Then you don't have to use maintainer-mode. |
| 42 | + |
| 43 | +How do you know how the tarball was made? If it was made with Meson, |
| 44 | +it contains files in untracked/build_scripts/, untracked/docs/ and possibly |
| 45 | +other subdirectories of untracked/. |
| 46 | + |
| 47 | +### Building from a tarball with Meson |
| 48 | + |
| 49 | +Don't call the builddir 'build'. There is a directory called 'build' with |
| 50 | +files used by Autotools. |
| 51 | + |
| 52 | +For instance: |
| 53 | +```sh |
| 54 | +# If the tarball was made with Autotools, you must enable maintainer-mode: |
| 55 | +$ meson --prefix=/some_directory --libdir=lib -Dmaintainer-mode=true your_builddir . |
| 56 | + |
| 57 | +# If the tarball was made with Meson: |
| 58 | +$ meson --prefix=/some_directory --libdir=lib your_builddir . |
| 59 | + |
| 60 | +# then: |
| 61 | +$ cd your_builddir |
| 62 | +$ ninja |
| 63 | +$ ninja install |
| 64 | +# You can run the tests like so: |
| 65 | +$ ninja test |
| 66 | +``` |
| 67 | + |
| 68 | +### Building from a tarball with Autotools |
| 69 | + |
| 70 | +For instance: |
| 71 | +```sh |
| 72 | +# If the tarball was made with Autotools: |
| 73 | +$ ./configure --prefix=/some_directory |
| 74 | + |
| 75 | +# If the tarball was made with Meson, you must enable maintainer-mode: |
| 76 | +$ ./autogen.sh --prefix=/some_directory |
| 77 | + |
| 78 | +# then: |
| 79 | +$ make |
| 80 | +$ make install |
| 81 | +# You can build the examples and tests, and run the tests, like so: |
| 82 | +$ make check |
| 83 | +``` |
| 84 | + |
| 85 | +## Building from git |
| 86 | + |
| 87 | +Building from git can be difficult so you should prefer building from a release |
| 88 | +tarball unless you need to work on the libsigc++ code itself. |
| 89 | + |
| 90 | +jhbuild can be a good help. See the [jhbuild repo](https://gitlab.gnome.org/GNOME/jhbuild), |
| 91 | +the [jhbuild wiki](https://wiki.gnome.org/Projects/Jhbuild) and |
| 92 | +the [jhbuild manual](https://gnome.pages.gitlab.gnome.org/jhbuild). |
| 93 | + |
| 94 | +### Building from git with Meson |
| 95 | + |
| 96 | +You must have Meson properly installed (meson, ninja, etc) and you |
| 97 | +will also need [mm-common](https://gitlab.gnome.org/GNOME/mm-common/) |
| 98 | +version 1.0.0 or higher. |
| 99 | + |
| 100 | +Maintainer-mode is enabled by default when you build from a git clone. |
| 101 | + |
| 102 | +Don't call the builddir 'build'. There is a directory called 'build' with |
| 103 | +files used by Autotools. |
| 104 | + |
| 105 | +```sh |
| 106 | +$ meson --prefix=/some_directory --libdir=lib your_builddir . |
| 107 | +$ cd your_builddir |
| 108 | +$ ninja |
| 109 | +$ ninja install |
| 110 | +# You can run the tests like so: |
| 111 | +$ ninja test |
| 112 | +# You can create a tarball like so: |
| 113 | +$ ninja dist |
| 114 | +``` |
| 115 | + |
| 116 | +### Building from git with Autotools |
| 117 | + |
| 118 | +You must have Autotools properly installed (autoconf, automake, etc) and you |
| 119 | +will also need [mm-common](https://gitlab.gnome.org/GNOME/mm-common/). |
| 120 | + |
| 121 | +```sh |
| 122 | +$ ./autogen.sh --prefix=/some_directory |
| 123 | +$ make |
| 124 | +$ make install |
| 125 | +# You can build the examples and tests, and run the tests, like so: |
| 126 | +$ make check |
| 127 | +# You can create a tarball like so: |
| 128 | +$ make distcheck |
| 129 | +# or |
| 130 | +$ make dist |
| 131 | +``` |
| 132 | + |
| 133 | +## Building with Microsoft Visual C++ |
| 134 | + |
| 135 | +See MSVC_NMake/README.txt. |
0 commit comments