Wonderful library with lots of useful functions, algorithms and data structures in C, link it with -l9wada
Compile the library with
To link it with your project use flag
-l9wada with GCC
gcc main.c -l9wada
Include files depending on functions and modules you will use all header files are available in
Library Structure And How To Contribute
the root of the repo contains
Makefile make_config.mk sources includes author LICENSE README.md
This makefile does not have rules for every source file, in fact it is static and includes other makefiles. the
make_config.mk makefile contains config variables, like what compiler to use, and what modules to compile (we'll get to that later) the sources directory contains multiple subdirectories
base get_next_line ttslist ft_printf
Each subdirectory of
sources is called a
module Every module contains source files and a
make_module.mk file Here's a preview of a
# MANUALLY GENERATED PART LOCAL_SRC_DIR = ttslist MODULE_NAME = ttslist INCLUDES = ttslist.h SRC_FILES = ttslist_constructors.c\ ttslist_delete.c\ ttslist_iterator.c\ ttslist_operations.c\ ttslist_purge.c\ ttslist_tools.c # AUTO GENERATED PART include make_config.mk OBJ_FILES = $(SRC_FILES:.c=.o) OBJ_FILES := $(addprefix $(OBJ_DIR)/, $(OBJ_FILES)) INCLUDES := $(addprefix $(INC_DIR)/, $(INCLUDES)) ... ... ...
We will just pay attention to the MANUALLY GENERATED PART in it you specify a unique module name, and the module directory name, header files to include, and source files the makefile takes care of the rest After adding a new module, we need to load it, so the makefile will compile it and link it to the library. We do that in the
# makefile config specifying locations, compiler and compilation flags NAME = lib9wada.a CC = gcc FLAGS = -Wall -Werror -Wextra SRC_DIR = sources INC_DIR = includes OBJ_DIR = objects DELETE_COMMAND = rm DELETE_COMMAND_FLAGS = -rf LINKER = ar LINKER_FLAGS = rc RANLIB = ranlib RANLIB_FLAGS = # IN HERE ADD OR REMOVE MODULES MODULES = base\ ttslist\ get_next_line
make_config.mk also contains other config variables, so you can change the compiler you use or the library name.
Every module should contain a README.md file, containing the documentation and explaining what each function does, with its prototype and usage. An example documentation is needed finally, the author file contains names or logins of people who contributed to this library.