So here's the repo I'm working with: https://github.com/Garuda1/unixlib
I'd like to know where my compiled lib (unixlib.a) and where my header (unixlib.h) should be so as to be able to use the lib (under Linux-x86 or Linux-x86_64) simply by compiling with:
$ gcc my_source.c -lunixlib
and including the header in my_source.c.
I suppose I add do this to Makefile:
install:
mv $(NAME).a $(LIB_PATH)
mv unixlib.h $(HEADER_PATH)
but I don't know what $(LIB_PATH) and $(HEADER_PATH) are...
Normally in UNIX systems the headers go to $PREFIX/include, library files go to $PREFIX/lib, where PREFIX can be /usr or /usr/local or whatever. In linux, if you install your library to these directories it will be found by gcc as you want with just gcc my_source.c -lunixlib.
The PREFIX environment variable is commonly used by various build tools to supply that prefix.
I would also recommend to use DESTDIR variable, it is used by Debian packaging tools at least.
So, the makefile would be like:
# PREFIX is environment variable, but if it is not set, then set default value
ifeq ($(PREFIX),)
PREFIX := /usr/local
endif
install: unixlib.a
install -d $(DESTDIR)$(PREFIX)/lib/
install -m 644 unixlib.a $(DESTDIR)$(PREFIX)/lib/
install -d $(DESTDIR)$(PREFIX)/include/
install -m 644 unixlib.h $(DESTDIR)$(PREFIX)/include/
Note, the install -d ... is used just in case if directory does not exist in the supplied DESTDIR for example.
You can also have a look at my non-recursive template for make to find some hints: https://github.com/cppfw/prorab/blob/master/src/prorab.mk
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With