I'm writing a C++ program for which I would like to use some functionality from Boost (not just the header-only modules), and which I'm distributing in source form. I'd like it to work on as many operating systems as possible, but take Linux for the sake of being concrete. (I'm more used to Windows, but there I can fall back on shipping a binary, as long as Boost is amenable to static linking.)
Right now, I'm shipping a simple handwritten makefile, so the procedure for compiling the program is just make
. However, I'm given to understand this no longer works when you bring Boost into the equation, because you can't know what version (if any) will be available on the user's machine, or where the header and library files will be located, and that one should instead use a build system such as autotools or CMake.
Is this correct? If so, which build system should be used if the highest priority is reliability (i.e. maximizing the probability that it will work when a user tries to compile and install the program)?
(I'm also planning to use GMP, if that makes a difference.)