• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

MSVC_NMake/H03-May-2022-661535

build/H20-May-2021-528479

cmake/H20-May-2021-235

docs/H20-May-2021-1,3071,065

examples/H03-May-2022-328214

sigc++/H03-May-2022-6,9182,929

subprojects/H20-May-2021-108

tests/H03-May-2022-5,4263,584

tools/H20-May-2021-224134

untracked/H20-May-2021-6,4545,603

.clang-formatH A D20-May-2021395 1513

AUTHORSH A D20-May-2021484 98

COPYINGH A D20-May-20217.5 KiB167128

ChangeLogH A D20-May-202138.6 KiB1,311751

ChangeLog.pre-2-3-1H A D20-May-2021103.3 KiB2,7602,036

Makefile.amH A D20-May-20212.4 KiB7740

NEWSH A D20-May-202130.2 KiB941751

README.mdH A D20-May-20214.1 KiB147106

autogen.shH A D20-May-2021271 85

cmake_uninstall.cmake.inH A D20-May-20211 KiB2220

configure.acH A D20-May-20213.2 KiB9174

libsigcplusplus.doapH A D20-May-20211.6 KiB3733

meson.buildH A D20-May-202111.7 KiB324283

sigc++-uninstalled.pc.inH A D20-May-2021442 108

sigc++.pc.inH A D20-May-2021652 1916

sigc++config.h.cmakeH A D20-May-20211.9 KiB6756

sigc++config.h.inH A D20-May-20211.8 KiB6756

sigc++config.h.mesonH A D20-May-20212 KiB7260

README.md

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