I'm trying to use Autotools to build my C program that needs to be linked against certain libraries. It only contains one C source file.
This is the Makefile.am associated with it:
bin_PROGRAMS=game
game_SOURCES=main.c
game_CFLAGS=`pkg-config --cflags libglfw`
game_LDFLAGS=`pkg-config --libs libglfw`
When I run make, it tries to compile it using this:
gcc `pkg-config --cflags libglfw` -g -O2 `pkg-config --libs libglfw` -o game game-main.o
However this is wrong, as the library link flags must be at the end, or else it will give errors about undefined references. For example if I run this:
gcc `pkg-config --cflags libglfw` -g -O2 -o game game-main.o `pkg-config --libs libglfw`
It compiles fine.
How can I make it so the LDFLAGS primary is appended at the end rather than in the middle?
You can start by not abusing LDFLAGS for libraries. LDFLAGS is for linker flags. Use foo_LDADD (for executables) or foobar_LIBADD (when producing a library) to list link libraries.
Also, running pkg-config inside Makefile.am is unnecessary and wasteful. Just use:
game_CFLAGS = ${libglfw_CFLAGS} game_LDADD = ${libglfw_LIBS}
libglfw_CFLAGS,LIBS
is populated by this in configure.ac
:
PKG_CHECK_MODULES([libglfw], [libglfw])
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