Simplest usage
Here we avoid use of any autotools.
First, this is the source file:
File: hello.c
#include <stdio.h> int main(void) { printf("Hello, world\n"); return 0; }
Here is corresponding Makefile:
File: Makefile
# This is target list - it's name describes target type # and how it is installed, it's value target files to be built. # bin - the targets will be installed under $(bindir) # PROGRAMS - the target is executable built from many sources bin_PROGRAMS = hello # The target 'hello'-s source file list. hello_SOURCES = hello.c # Run Antimake include antimake.mk
Also install Antimake and we are ready to build:
$ cp ../../antimake.mk . $ ls Makefile antimake.mk hello.c
Build the project
$ make CC hello.c CCLD hello $ ls Makefile antimake.mk hello hello.c $ ./hello Hello, world
We can even install it already:
$ make install prefix=/opt DESTDIR=./inst INSTALL hello ./inst/opt/bin $ ls ./inst/opt/bin hello
For creating source package, we need to provide additional info:
File: Makefile
# Package name and version for tarball filename PACKAGE_NAME = myhello PACKAGE_VERSION = 1.0 # Non-source files to put into tarball EXTRA_DIST = Makefile antimake.mk bin_PROGRAMS = hello hello_SOURCES = hello.c include antimake.mk
Now we can create package that can be given to others.
$ make dist CHECK dist-gzip MKDIR myhello-1.0 COPY myhello-1.0 PACK myhello-1.0.tar.gz $ ls Makefile antimake.mk hello hello.c inst myhello-1.0.tar.gz $ tar tzf myhello-1.0.tar.gz | sort myhello-1.0/ myhello-1.0/Makefile myhello-1.0/antimake.mk myhello-1.0/hello.c
Clean the tree
$ make clean CLEAN hello $ ls Makefile antimake.mk hello.c inst myhello-1.0.tar.gz
Done!