In a directory containing source that gets built into a program (as
opposed to a library or a script), the
PROGRAMS primary is used.
Programs can be installed in
pkglibexecdir, or not at all
noinst_). They can also be built only for ‘make check’, in
which case the prefix is ‘check_’.
bin_PROGRAMS = hello
In this simple case, the resulting Makefile.in will contain code
to generate a program named
Associated with each program are several assisting variables that are named after the program. These variables are all optional, and have reasonable defaults. Each variable, its use, and default is spelled out below; we use the “hello” example throughout.
hello_SOURCES is used to specify which source files
get built into an executable:
hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h
This causes each mentioned .c file to be compiled into the corresponding .o. Then all are linked to produce hello.
hello_SOURCES is not specified, then it defaults to the single
file hello.c (see Default
Multiple programs can be built in a single directory. Multiple programs
can share a single source file, which must be listed in each
Header files listed in a
_SOURCES definition will be included in
the distribution but otherwise ignored. In case it isn’t obvious, you
should not include the header file generated by configure in a
_SOURCES variable; this file should not be distributed. Lex
(.l) and Yacc (.y) files can also be listed; see Yacc and Lex support.