Installed Files¶
Header Files and Libs¶
NOTE: Here:
${M}
means “package major version”${m}
means “package minor version”*
is a wildcard (don’t try to includeymo_*.h
)${dext}
is your platform lib extension (e.g..so
or.dylib
, etc)
${prefix}
├── bin ───┐
│ ├── yimmo-example-http ├───── Binaries Installed Here
│ ├── yimmo-example-mqtt │
│ ├── yimmo-example-ws │
│ └── yimmo-wsgi ───┘
│
├── include
│ │
│ └── yimmo-${M}.${m}
│ ├── yimmo.h ───┬───── Core Public API
│ ├── ymo_*.h ───┘
│ │
│ ├── core ───┬───── Core Internal API
│ │ └── ymo_*.h ───┘ (#include <core/ymo_*.h>)
│ │
│ │
│ ├── ymo_http.h ───────── HTTP Public API
│ │
│ ├── http ───┬───── HTTP Internal API
│ │ └── ymo_http_*.h ───┘ (#include <http/ymo_http_*.h>)
│ │
│ │
│ ├── ymo_ws.h ───────── WebSocket Public API
│ │
│ ├── ws ───┬───── WebSocket Internal API
│ │ └── ymo_ws_*.h ───┘ (#include <ws/ymo_ws_*.h>)
│ │
│ │
│ ├── ymo_mqtt.h ───────── MQTT Public API
│ │
│ └── mqtt ───┬───── MQTT Internal API
│ └── ymo_mqtt_*.h ───┘ (#include <mqtt/ymo_mqtt_*.h>)
│
└── lib
│ Core libs:
├── libyimmo.${M}.${dext} ───────── dynamic
├── libyimmo.a ───────── static
├── libyimmo.la ───────── libtool archive
│
├── libyimmo_http.${M}.${dext} ───────── (Ditto http)
├── libyimmo_http.a
├── libyimmo_http.la
│
├── ... (ditto "ws" and "mqtt")
│
└── pkgconfig
└── ...
Pkg-Config¶
Pkg-Config files are provided and installed into ${prefix}/lib/pkgconfig
for each major/minor version pair (with a symlink which points to the latest
major installed), e.g.:
${prefix}
│
├── include
│ │
│ └── ...
│
└── lib
│
│
├── ...
│
└── pkgconfig ───┐
│ │
├── libyimmo-${M}.${m}.pc ├── pkg-config data
├── libyimmo-${M}.${m}_http.pc │ (one per lib)
├── libyimmo-${M}.${m}_mqtt.pc │
└── libyimmo-${M}.${m}_ws.pc ───┘
These can be used to determine the CFLAGS
and LDFLAGS
to use when
building against libyimmo, e.g.:
# CFLAGS
$ pkg-config libyimmo-0 libyimmo_http-0 --cflags
-I/usr/local/include/yimmo-0.0
# LDFLAGS
$ pkg-config libyimmo-0 libyimmo_http-0 --libs
-L/usr/local/lib -lyimmo -lyimmo_http
Autotools¶
If your project uses autotools, we can do one better, using PKG_CHECK_MODULES. To build a project which uses yimmo core and HTTP, for example, you might do:
PKG_CHECK_MODULES([YIMMO], [libyimmo])
PKG_CHECK_MODULES([YIMMO_HTTP], [libyimmo_http])
AM_CFLAGS=\
@YIMMO_CFLAGS@ \
@YIMMO_HTTP_CFLAGS@
AM_LDFLAGS=\
@YIMMO_LIBS@ \
@YIMMO_HTTP_LIBS@
bin_PROGRAMS=\
my-program
my_program_SOURCES=\
main.c
Symlinks¶
Header directories, library files, and package config data are installed with major/minor suffixes. Symlinks are created from the major version to the major/minor pair, e.g.:
${prefix}
│
├── include
│ └── yimmo-${M} -> yimmo-${M}.${m}
│
└── lib
├── libyimmo.${dext} -> libyimmo.${M}.${dext}
├── ...
│
└── pkgconfig
│
├── libyimmo-${M}.pc -> libyimmo-${M}.${m}.pc
└── ...